linq中where语句的多个条件

问题描述:

用户从ui发布的变量:“_ author”。
它可以是一个名称或逗号分隔的多个名称..第一个是好,但我需要处理第二种情形 _author =“埃里克”; //那好吧linq中where语句的多个条件

这里是细跟单名,

if (!string.IsNullOrEmpty(_author)) 
     { 
      allQueryable = allQueryable.Where(u => u.Authors.Contains(_author)); 
     } 

_author = “埃里克,珍妮弗·帕特里克。”; //嗯

我尝试了这种情况:

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

我想你的意思是写'if(!string.IsNullOrEmpty(_author))'。你已经排除了“!”在你的情况开始时。 – Jace

+1

你的问题是什么? – Enigmativity

+0

那么你的问题是什么? – Mostafiz

你并不需要有一个特殊的情况下,为一个条目,并用逗号分隔的多个条目,并且你不需要处理情况:用户类型无关。用这两行替换两个嵌套if语句:

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