如何在c#中使用linq查询获取至少一个id匹配的数据

时间:2018-01-19 12:56:53

标签: c# linq

我有一个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)))
                        );
  }
}

1 个答案:

答案 0 :(得分:2)

不需要for loop,您只需使用.Any(),如下所示

string[] values = girlLevelId.Split(',');
query = query.Where(p =>IsCategorySearchable && 
                    values.Any(v => p.GirlLevelID.Contains(v.Trim()))
                                        );