2016-07-24 203 views
0

用戶從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

回答

2

你並不需要有一個特殊的情況下,爲一個條目,並用逗號分隔的多個條目,並且你不需要處理情況:用戶類型無關。用這兩行替換兩個嵌套if語句:

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