请让我举个例子。说,我们有:
- 枚举一些正则表达式组名称的 CheckedListBox 控件。
- 一个 TextBox 控件,用户可以在其中打印一些输入文本
- 一个 Button,它使程序检查输入文本是否与正则表达式匹配并向用户显示已检查(在我们的 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(实现类似接口列表)的 LINQ 功能?
PS:这只是一个例子,所以,请不要太挑剔..