c# - 如何从集合中获取Linq?

标签 c# linq-to-objects

请让我举个例子。 比如说,我们有:

  1. 一个 CheckedListBox 控件,用于枚举一些正则表达式组的名称。
  2. 一个 TextBox 控件,用户可以在其中打印一些输入文本
  3. 如果输入文本与正则表达式匹配并向用户显示已检查(在我们的 CheckedListBox 中)组的值,则使程序进行检查的按钮。

让按钮点击事件处理程序看起来像这样:

Regex r = new Regex(@"^(?<Num5>\d{1,5})\:(?<SomeText>.{1,})$");
Match m = r.Match(textBox1.Text);
if (m.Success)
{
    MessageBox.Show(
        string.Concat(
            checkedListBox1.CheckedItems
                           .OfType<string>()
                           .Where(s => m.Groups[s].Success)
                           .SelectMany(s => string.Format("{0}: {1}\n",
                                                          s,
                                                          m.Groups[s].Value))));
}
else
    MessageBox.Show("Input text didn't match");

那么,是否有机会在不显式使用 OfType 或 Cast 方法的情况下,从 Collection 中获取类似于 CheckedItemCollection(实现类似接口(interface)列表)的 LINQ 功能?

P.S.:这只是一个例子,所以,请不要对它太挑剔..

最佳答案

不,CheckedItemCollection 是非泛型的,编译器不知道您在处理什么对象。 使用

.OfType<type>()

尽你所能。

关于c# - 如何从集合中获取Linq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11607380/

相关文章:

linq - 这也被认为是子查询吗?

c# - 有没有更好的方法来调用 C# 中对象列表的比较?

c# - NFC MIFARE Classic 1K 无法读写

c# - LINQ to Object 比较两个整数列表的不同值

c# - LINQ - 复杂 xml 的分组依据

c# - Linq 选择哪里

c# - 在列表中选择不同的两个属性

c# - NServiceBus 警告 "No handlers could be found for message type"

c# - 自定义控件属性 - C#、窗体

c# - 确定 WPF 是否可以加载图像文件的最佳方法是什么?