繁体   English   中英

Linq中where语句中的多个条件

[英]multiple conditions in where statement in linq

用户从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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM