linq中where语句中的多个条件
本文关键字:条件 语句 where linq | 更新日期: 2023-09-27 17:58:27
用户从ui发布的变量:"_author"
它可以是一个名称,也可以是逗号分隔的多个名称。。第一种情况可以,但我需要处理第二种情况_author="Erick";//可以
这是一个很好的名字,
if (!string.IsNullOrEmpty(_author))
{
allQueryable = allQueryable.Where(u => u.Authors.Contains(_author));
}
_author="Erick,Jennifer,Patrick,.."//hmmm
我在这个案例中尝试了什么:
if (!string.IsNullOrEmpty(_author))
{
if (_author.Contains(','))
{
allQueryable = allQueryable.Where(u =>u.Authors.Intersect(_author.Split(',').ToArray()));
}
else
allQueryable = allQueryable.Where(u => u.Authors.Contains(_author));
}
实体定义:
public class Book : EntityBase
{
public string Title { get; set; }
public string Publisher { get; set; }
public string Description { get; set; }
public string[] Authors { get; set; }
}
对于一个条目和多个用逗号分隔的条目,您不需要使用特殊的大小写,也不需要处理用户不键入任何内容的情况。用以下两行替换两个嵌套的if语句:
string[] authors = _author.Replace(" ","").Split(',');
allQueryable = allQueryable.Where(u => u.Authors.Intersect(authors).Count() > 0).ToList();