标题说明我想做的大部分内容。我有两个表“订单”和“客户”。 orders表包含已下订单的每个客户的 customerID , customers 表包含每个 customerID 。我需要选择并显示尚未下订单的客户。我知道
我需要显示 customers表中 customerID 与订单中的 customerID 不匹配的行表
我不知道怎么做但是没有遇到我能理解的解决方案,所以任何帮助都会非常感激。这就是我尝试过的。
private void btnQ9_Click(object sender, RoutedEventArgs e)
{
DataClasses1DataContext dc = new DataClasses1DataContext();
var query = from c in dc.Customers
join o in dc.Orders on c.CustomerID equals o.CustomerID
group o by new { o.CustomerID, c.CompanyName } into grp
where(grp.Key.CustomerID.Count() ==0)
select new
{
CompanyName = grp.Key.CompanyName,
Order = grp.Key.CustomerID.Count()
};
DataQ9.ItemsSource = query.ToList();
}
答案 0 :(得分:3)
好像你只想要
from c in dc.Customers
where !dc.Orders
.Select(o => o.CustomerID)
.Contains(c.CustomerID)
或
from c in dc.Customers
where !dc.Orders
.Any(o => o.CustomerID == c.CustomerID)
他们可能会生成不同的SQL,所以我会尝试两者,看看哪一个表现更好(如果差异很明显)。