解读涉及字符串的LINQ to Objects查询

时间:2014-08-09 19:28:06

标签: c# linq-to-objects

(免责声明:我是LINQ的新手,我确实完成了我的作业,但我的所有研究都提出了直接处理字符串的示例。我的代码处理的是ObservableCollection个对象,其中每个对象包含一个字符串)。

我有以下代码:

public class Word
{
    public string _word { get; set; }
    // Other properties.
}

ObservableCollection<Word> items = new ObservableCollection<Word>();

items.Add(new Word() { _word = "Alfa" });
items.Add(new Word() { _word = "Bravo" });
items.Add(new Word() { _word = "Charlie" });

我试图找到有&#34; r&#34;在他们:

IEnumerable<Word> subset = from ii in items select ii;
subset = subset.Where(p => p._word.Contains("r"));

上述作品(我得到了&#39; Bravo&#39;以及&#39; Charlie&#39;)。

我的问题:我已经在网上/书中找到的一些例子中设计了上述LINQ查询。

  1. 它是如何做的?
  2. 是否有更好/更直接的方式?
  3. 感谢。

1 个答案:

答案 0 :(得分:1)

你可以实现你想要的更简单,如下所示:

IEnumerable<Word> subset = items.Where(x => x._word.Contains("r"));

使用上面的linq查询,您可以使用名为Where的扩展方法过滤名为items的集合。 items集合中的每个元素都满足Where方法中的过滤器,它将包含在subset中。在Where内部,您已使用lambda表达式定义了fitler。在=>的左侧,您有输入 - items的随机元素,而在=>的右侧,您有输出,在您的情况下将是{{ 1}}或true。在false的严格方面,您使用名为=>的字符串方法,该方法简单地检查您作为此方法的参数传递的字符串是否包含在名为Contains的属性中,元素_word