在以下LINQ查詢中,我需要顯示All
客戶,包括尚未下訂單但訂單價格超過100美元的客戶。但是我的下面的LINQ Query將返回所有客戶,不管他們的訂單價格。它似乎忽略了我在下面的LINQ查詢中的Where(ord => ord.price > 100)
子句。我可能做錯了什麼?LINQ to SQL - Left OUTER加入兩個連接不工作
模式:
public class Customer
{
public int CustomerId { get; set; }
public string CustName{ get; set; }
}
public class Order
{
public int OrderId { get; set; }
public int CustomerId { get; set; }
public float price { get; set; }
}
LINQ查詢:
var Query1 = from c in Customers
join ord in Orders on c.CustomerId equals ord.CustomerId into cord into cord
from t in cord.Where(ord => ord.price > 100).DefaultIfEmpty()
select new {CustName= c.Name, OrderID = (t == null ? 0 : t.OrderId)};
SQL查詢:
我想翻譯下面的T-SQL查詢到LINQ查詢:
SELECT c.Name, OrderID
FROM Customers c
LEFT OUTER JOIN Orders ord
ON c.CustomerID = ord.CustomerID
AND ord.Price > 100
所以你要返回所有客戶的列表,用'OrderId'只與超過100的順序填充?或者您是否想要返回已經下單超過100的客戶名單? –
@WillRay謝謝你的幫助。我在文章中添加了「更新2」部分來回答你的問題。 – nam