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; }
    }

linq中where语句中的多个条件

对于一个条目和多个用逗号分隔的条目,您不需要使用特殊的大小写,也不需要处理用户不键入任何内容的情况。用以下两行替换两个嵌套的if语句:

string[] authors = _author.Replace(" ","").Split(',');
allQueryable = allQueryable.Where(u => u.Authors.Intersect(authors).Count() > 0).ToList();