Linq2SQL和IQueryable

时间:2012-10-07 11:07:58

标签: linq linq-to-sql iqueryable

LINQ2SQL还是新手,请原谅我的无知......

我有一个用户组件,其中包含一个文本框和一个按钮。该组件用作通用ListOfValue过滤器。 该组件有一个函数来设置IQueryable,该函数传递给用户单击控件上的按钮时打开的表单。 该表单由一个网格(c1flexgrid)组成,该网格填充了IQueryable的数据。表单上有一个bindingsource,它将IQueryable作为数据源。 用户可以在网格内部进行选择,在选择一个条目后,对话框将关闭,并且所选行(或者更好的行中选定的LINQ2SQL对象)将传递回控件。 在此控件上,我想显示该选定对象中的一个特定字段。该字段的名称将作为字符串传递给用户控件。

我的问题是,我不知道如何从“通用”LINQ2SQL对象获取该字段数据。 在调试器中,我可以看到,所选对象具有特定的enity类型(对应于查询)

可能类似的东西 Workaround for lack of 'nameof' operator in C# for type-safe databinding? 但只是对立的方式:)

非常欢迎任何帮助

1 个答案:

答案 0 :(得分:1)

我假设您的IQueryable在设计时不知道类型T.如果这是正确的,您需要使用反射来获得您想要的值。

var value = typeof(T).GetProperty("MyField").GetValue(instance, null);

或者,将实例强制转换为实现字段的公共基类型。

CommonBase castInstance = (CommonBase)instance;
var value = castInstance.MyField;