什么是C#Lambda Expression的SQL [IN]语句的等价物?

时间:2013-04-09 18:46:49

标签: c# lambda

我在这种情况下。我有两个不同对象类型的列表,它们都有共享属性值。我们假设它是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>

1 个答案:

答案 0 :(得分:4)

以下代码应该有效:

var someInvoiceList = new int[] {1, 2, 3};
var result = list_A.Where(x => someInvoiceList.Contains(x.InvoiceID));