列表集合包含精确字符串

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

现在我想获取Content属性中只有字母'a'的行。例如,我尝试了以下代码:
list = list.Where(x => x.Content.ToLower().Contains("a")).ToList();

但这样会返回所有三行。

我想在一个字符串中只搜索完全匹配的字符串。


x.Content.ToLower().StartsWith("a")是什么意思? - Glory Raj
问题是它可以是列表中的任何字符串,不仅限于'a',它可以是'b'、'c'、'aa'或任何其他字符串。 - Manek
3个回答

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

编辑:为了更好的性能,将 Count() > 0 更改为 Any()


哇,那个起作用了。对于我的真正目的,我必须在分割后修剪字符串,即使用.Where(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);
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接