我在这种情况下。我有两个不同对象类型的列表,它们都有共享属性值。我们假设它是invoiceID
。
在SQL中,如果我想从table_A
获取所有记录,因为它的invoiceID
列值与invoiceId
内的任何table_B
匹配,我可能会做一些事情像这样。
Select *
From table_A
where invoiceID in ( select invoiceId from table_B)
对于这种情况,C#中的等效LINQ或Lambda表达式是什么?
我习惯使用单个值搜索列表中的元素,例如:
var result = list_A.Where(x=>x.InvoiceID = someInvoiceID)
或.contains()
代替。
但是,这可能只涵盖一个invoiceID
值。
我想,我可以为invoiceID
上的每个list_B
运行循环,然后将结果存储在另一个列表中,但我只是想知道是否有更好的方法来执行此操作?< / p>
答案 0 :(得分:4)
以下代码应该有效:
var someInvoiceList = new int[] {1, 2, 3};
var result = list_A.Where(x => someInvoiceList.Contains(x.InvoiceID));