3

我在这种情况下。我有两个不同对象类型的列表,它们都具有共享属性值。假设它是invoiceID

在 SQL 中,如果我想从中获取所有记录,table_A因为它的列invoiceID值与任何invoiceIdinside匹配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值。

我想,我可以为每个invoiceIDon运行循环list_B,然后将结果存储在另一个列表中,但我只是想知道是否有更好的方法来做到这一点?

4

1 回答 1

5

以下代码应该可以工作:

var someInvoiceList = new int[] {1, 2, 3};
var result = list_A.Where(x => someInvoiceList.Contains(x.InvoiceID));
于 2013-04-09T18:54:18.590 回答