c# Lambda表达式的SQL [IN]语句等效是什么?

本文关键字:语句 是什么 IN 表达式 Lambda SQL | 更新日期: 2023-09-27 18:08:13

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

在SQL中,如果我想从table_A中抓取所有记录,因为它具有列invoiceID值与table_B内的任何invoiceId匹配,我可能会这样做。

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值。

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

c# Lambda表达式的SQL [IN]语句等效是什么?

以下代码应该可以工作:

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