从表中选择ID,它与另一个表中的ID不匹配

时间:2016-05-03 18:09:46

标签: c# sql-server linq

标题说明我想做的大部分内容。我有两个表订单”和“客户”。 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();
}

1 个答案:

答案 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,所以我会尝试两者,看看哪一个表现更好(如果差异很明显)。