2016-07-24 3 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();