C#Linq查询 - 不在DataTable中

时间:2018-03-26 13:20:27

标签: c# linq

我有几个数据表,1个用于按Rank排序的产品,1个用于客户购买历史记录。我想要做的就是拉出客户尚未购买的前250种产品。我已经得到了以下代码作为测试,但我被困在最后一部分。

{{1}}

如果这样可以更容易地使用Linq,我不必使用数据表吗?我只是想不出更好的方法来存储数据库查询的结果。如果该信息有用,那么这些信息是通过ODBC从ctreeSQL数据库传来的?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我假设您想要的是没有客户购买的前250种产品,而不是每位客户的前250种产品。

创建HashSet以保留所购买的产品ID:

var productsPurchased = new HashSet<int>(CustomerHistory.AsEnumerable().Select(ch => ch.Field<int>("ProductID")).Distinct());

查找所有未购买的产品并按排名排序,然后排在前250位:

var topSellers = (from p in Product.AsEnumerable()
                  where !productsPurchased.Contains(p.Field<int>("ProductId"))
                  orderby p.Field<int>("Rank") descending
                  select p)
                 .Take(250);