如何在linq中搜索逗号分隔的字段

本文关键字:分隔 字段 搜索 linq | 更新日期: 2023-09-27 18:10:19

如何通过linq查询数据库中以逗号分隔的值。我的场景是用户可以从列表框中选择多个值,然后在数据库中的逗号分隔字段中搜索这些项目。我选择了两个条目,所以值是2,3数据库字段的值是

1,2,4,5
1,4,3,6
2,3,4,5
1,4

选择的记录必须是记录1,因为它有2,记录2,因为它有3,记录3,因为它有两个,拒绝记录4。我尝试的是

string Commodites = "2,3";
obj.Where(e => Commodites.Contains(e.Id)).Distinct()

但是它只选择值为2和3的记录

如何在linq中搜索逗号分隔的字段

对于CSV拆分,我建议您使用任何CSV解析器,而不是简单地使用string.Split方法。

string[] input = { "1,2,4,5", "1,4,3,6", "2,3,4,5", "1,4" };
var result = input.Where(l => l.Split(',').Any(s => new[] { "2", "3" }.Contains(s)));