破译LINQ到对象查询涉及字符串
本文关键字:字符串 查询 对象 LINQ 破译 | 更新日期: 2023-09-27 18:17:12
(免责声明:我是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" });
我正在查找包含"r"的单词:
IEnumerable<Word> subset = from ii in items select ii;
subset = subset.Where(p => p._word.Contains("r"));
以上工作(我得到'Bravo'和'Charlie')。
我的问题:我从网上/书中找到的一些例子中设计了上面的LINQ查询。
- 它是如何做到它所做的?
- 有没有更好/更直接的方法?
谢谢。
您可以像下面这样实现更简单:
IEnumerable<Word> subset = items.Where(x => x._word.Contains("r"));
在上面的linq查询中,您使用名为Where
的扩展方法筛选名为items的集合。items
集合中满足Where
方法中过滤条件的每个元素,都将包含在subset
上。在Where
中,您已经使用lambda表达式定义了过滤器。在=>
的左侧,您有输入- items
的随机元素,而在=>
的右侧,您有输出,在您的情况下,它将是true
或false
。在=>
的右侧,使用名为Contains
的字符串方法,简单来说,该方法检查作为参数传递给该方法的字符串是否包含在元素x
的属性_word
中。