我遇到了这个问题..我有一个以下格式的 CSV 文件(客户,购买的物品对):
customer1 item1
customer1 item2
customer1 item3
customer2 item4
customer2 item2
customer3 item5
customer3 item1
customer3 item2
customer4 item1
customer4 item2
customer5 item5
customer5 item1
现在,我希望在查询结果中显示:
item x; item y; how many customers have bought itemx and item together
例如:
item1 item2 3 (because cust1 and cust2 and cust3 bought item1 and item2 together)
item1 item5 1 (because cust5 and cust3 bought item1 and item5 together)
该查询返回客户成对购买的所有可能的商品组合。另请注意,Pair(x, y) 与 Pair(y, x) 相同。
SQL 查询如下所示:
SELECT a1.item_id, a2.item_id, COUNT(a1.cust_id) AS how_many_custs_bought_both
FROM data AS a1
INNER JOIN data AS a2
ON a2.cust_id=a1.cust_id AND a2.item_id<>a1.item_id AND a1.item_id<a2.item_id
GROUP BY a1.item_id, a2.item_id
您将如何在 C# 中做到这一点 1) 使用常规 for/foreach 循环 2) 使用 LINQ ?
我首先尝试在 LINQ 中执行此操作,但当我注意到 LINQ 不支持 join 子句中的多个 equals 关键字时卡住了。然后我尝试使用普通循环,但是,它变得如此低效以至于它每秒只能处理 30 行(CSV 文件行)。
请指教!