2016-07-24 20 views
0

ユーザがui: "_ author"から投稿した変数。
それは一つの名前またはカンマが...最初のものはOKですが、私は2番目のシナリオ _author =「エリック」に対処する必要がある複数の名前を区切ることができ; //ここでは、[OK]linqのwhere文の複数の条件

のthats単一の名前で結構です、

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

} 

エンティティdefination:

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

あなたは、カンマで区切られた1つのエントリと複数のエントリのための特別なケースを持っている必要はありません、とあなたはユーザーの種類は何もケースを処理する必要はありません。 2つのネストされたif文を以下の2行で置き換えます。

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