2011-11-30 33 views
3

我有一個列表集合,並說我將3個項目添加到它們。列表集合包含確切的字符串

list.Add(new ContentDomain() { Id = "1" , Content = "aaa,bbb,ccc,ddd"}); 
list.Add(new ContentDomain() { Id = "2" , Content = "aa,bb,cc,dd"}); 
list.Add(new ContentDomain() { Id = "3" , Content = "a,b,c,d"}); 

現在我想要的是獲取內容屬性中只有'a'的行。

就像我想是這樣

list = list.Where(x => x.Content.ToLower().Contains("a")).ToList(); 

但會給我所有的三排。

我想只在字符串中搜索確切的字符串。

+0

怎麼樣x.Content.ToLower()Startswith( 「A」))。 –

+0

事情是它可以是列表中的任何字符串..不僅'a'..它可以是'b'或'c'或'aa'任何東西 – Manek

回答

8
list.Where(x => x.ToString().ToLower().Split(',').Where(a => a.Trim() == "a").Any()).ToList(); 

編輯:改變計數()> 0至任何()獲得更好的性能

+0

哇,這工作..對於我真正的目的,我不得不在分割後修剪字符串,即 。其中(a => a.Trim()。Equals(「a」))。Count()被使用。無論如何感謝你的幫助負載..保持精神...... – Manek

0

將其轉換爲一個字符串數組,並且在數組中查找的字符串。

list = list.Where(x => x.Content.ToLower().Split(',').IndexOf("a")>= 0).ToList(); 
0

試試這個:

 IList<ContentDomain> returned = new List<ContentDomain>(); 
     foreach(ContentDomain myList in list) 
     { 
      var ret = myList.Content.Split(','); 
      bool exists = (from val in ret 
          where val.Contains('a') 
          select true).FirstOrDefault(); 
      if (exists) 
       returned.Add(myList); 
     } 
相關問題