我有一个multiselect的下拉列表,我在c#中将逗号分隔多个值发送给控制器,其中我将分割逗号分隔的值并发送到linq查询。但在这里我有一个问题,即我在数据库中有girlLevelId = 2,4,5但是我发送了1,2值的分裂,但是我无法获得匹配值为2的数据。如果我发送2, 4然后我正在重新搜索数据,但是当我发送1,2时,我需要获取一个匹配的数据,即2。
这是我的分割代码和linq查询:
else if (!string.IsNullOrEmpty(girlLevelId) && IsGirlLevelSearchable)
{
string[] values = girlLevelId.Split(',');
for (int i = 0; i < values.Length; i++)
{
var girlLevelValueId = values[i].Trim();
query = query.Where(p =>
(IsCategorySearchable &&
(p.GirlLevelID.Contains(girlLevelValueId)))
);
}
}
答案 0 :(得分:2)
不需要for loop
,您只需使用.Any()
,如下所示
string[] values = girlLevelId.Split(',');
query = query.Where(p =>IsCategorySearchable &&
values.Any(v => p.GirlLevelID.Contains(v.Trim()))
);