我有一个具有以下结构的Transactions
表:
ID | Product | OrderCode | Value
1 | 8 | ABC | 100
2 | 5 | ABC | 150
3 | 4 | ABC | 80
4 | 5 | XPT | 100
5 | 6 | XPT | 100
6 | 8 | XPT | 100
7 | 5 | XYZ | 100
8 | 8 | UYI | 90
如何使用产品5和8的订单的订单代码创建表(或列表)?
在上面的示例中,应该是订单ABC
和XPT
。
答案 0 :(得分:4)
可能有很多方法可以做到这一点,但这是我想出的一个相当通用的解决方案:
FilteredList =
VAR ProductList = {5, 8}
VAR SummaryTable = SUMMARIZE(Transactions,
Transactions[OrderCode],
"Test",
COUNTROWS(INTERSECT(ProductList, VALUES(Transactions[Product])))
= COUNTROWS(ProductList))
RETURN SELECTCOLUMNS(FILTER(SummaryTable, [Test]), "OrderCode", Transactions[OrderCode])
此处的关键是,如果特定订单代码的产品集同时包含5
和8
,那么VALUES(Transations[Product])
与集{5,8}
的交集就完全相同设置且计数为2
。如果两者都不存在,则计数将为1
或0
,并且测试失败。
答案 1 :(得分:0)
请详细说明您的问题,从上面的帖子中我了解到您想过滤列表,为此,您可以使用下面的代码
List<Transactions> listTransactions = listTransactions.FindAll(x=>x.Product == 5 || x.Product == 8)