簡體   English   中英

Linq中的簡單Sql語句?

[英]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表示您從UserContact具有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM