本机动态林克 (C#)
本文关键字:林克 动态 本机 | 更新日期: 2023-09-27 17:56:44
是否可以
使用 c# 5.0 (.Net 4.5) 中的 dynamic
关键字来创建动态 LINQ 查询?
我知道使用第三方库可以做到这一点,但现在这不可行。
说明我的观点的最简单方法是通过一个例子:
class test
{
public int i { get; set; }
}
void Foo()
{
var collection = new[] { new test() { i = 1 }, new test() { i = 2 } };
Bar(collection);
}
void Bar<T>(IEnumerable<T> collection)
{
//this works
foreach (dynamic item in collection)
if (item.i == 2)
{
//do something
}
//this does not - although this is what id like to use
foreach (dynamic item in collection.Where(a => a.i == 2))
{
//do something
}
}
按请求编辑:生成编译器错误 -
"T"不包含"i"的定义,并且找不到接受类型"T"的第一个参数的扩展方法"i"(您是否缺少使用指令或程序集引用?
替换 T in Bar 声明以使用动态:
void Bar(IEnumerable<dynamic> collection)
{
//this works
foreach (dynamic item in collection)
if (item.i == 2)
{
//do something
}
//this does compile
foreach (dynamic item in collection.Where(a => a.i == 2))
{
//do something
}
}