请让我举个例子。 比如说,我们有:
- 一个 CheckedListBox 控件,用于枚举一些正则表达式组的名称。
- 一个 TextBox 控件,用户可以在其中打印一些输入文本
- 如果输入文本与正则表达式匹配并向用户显示已检查(在我们的 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/