[英]Simple Sql statement in Linq?
Table: Users
ID123 John Doo
ID345 John Woo
Table: Contacts
ID123 Microsoft johnd@microsoft.com +1-234567
ID345 Private Co johnw@privateco.com +9-654321
ID345 IBM johnw@ibm.com +1-456789
運行SQL:
SELECT FirstName, LastName, CompanyName
FROM Users INNER JOIN Contacts ON User.Id = Contacts.UserId
WHERE (FirstName = 'John' AND CompanyName = 'Microsoft') OR CompanyName = 'IBM'
我們得到以下結果:
John Doo Microsoft
John Woo IBM
到目前為止很簡單,對吧? 現在,讓我們用C#Lambda或Linq編寫此代碼:
conn.Users.Where(user =>
(user.FirstName=="John" && user.Contacts.Any(contact => contact.CompanyName=="Microsoft"))
|| user.Contacts.Any(contact => contact.CompanyName=="IBM"))
.Select(......);
我的問題是,為了達到相同的結果集,我們到底在Select()
語句中添加了什么?
ON User.Id = Contacts.UserId
表示您從User
到Contact
具有1..*
關系。
這意味着使用Linq
,必須首先查詢Contacts
而不是Users
,因為結果將是每個聯系人一行,而不是每個用戶一行。
這樣的事情會起作用:
conn.Contacts
.Where(c => c.CompanyName == "IBM" ||
(c.CompanyName == "Microsoft" && c.User.FirstName == "John"))
.Select(c => new { c.User.FirstName, c.User.LastName, c.CompanyName })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.