在一列中搜索多个值

时间:2016-03-22 17:44:43

标签: linq linq-to-sql

如何使用linq查询在一列中基于多个值搜索选择记录。 如产品ID是" product1"," product2"," product3"我们有多少值

2 个答案:

答案 0 :(得分:1)

您可以使用.Contains方法检查值是否在列表中。

var values = new List<string>() { "Prod1", "Prod2", "Prod3" };
var query = context.Set<Product>().Where(x => values.Contains(x.Name));

答案 1 :(得分:0)

您可以使用类似的东西(这是VB.Net,必要时更改为C#)

Dim result = products.Where(Function(p) p.ID = "product1" Or p.ID = "product2" Or p.ID = "product3", ...)

或者,您可以将其全部拉回客户端并使用.Contains,如下所示:

Dim materializedProducts = products.ToList()
Dim result = materializedProducts.Where(Function(p) {"product1", "product2", "{product3}", ...}.Contains(p.ID))

更进一步,你可以创建一个名为IsIn或类似的扩展方法(泛型,如果它漂浮你的船),它允许你交换集合的顺序和搜索值:

<Extension()> 
Public Function IsIn(Of T)(ByVal searchValue As T, 
                             ByVal searchSet As IEnumerable(Of T))
    Return searchset.Contains(searchValue)
End Sub


Dim materializedProducts = products.ToList()
Dim result = materializedProducts.Where(Function(p) p.ID.IsIn({"product1", "product2", "{product3}", ...}))
相关问题