【发布时间】:2014-11-03 07:44:10
【问题描述】:
我使用了这个答案的修改版本:How to dynamically create a class in C#? 来创建一个表示类型化类的动态对象。
public static object CreateNewObject(string[] columnNames)
{
var myType = CompileResultType(columnNames);
return Activator.CreateInstance(myType) as IQueryable;
}
然后在主应用中:
var obj = MyTypeBuilder.CreateNewObject(rs.ColumnNames);
我需要以某种方式将其转换为 IQueryable,以便我可以对它进行一些 Linq 调用,例如 .where()、.select() 等。自然,我目前无法做到这一点,因为我的应用程序不知道该对象中究竟是什么,或者该对象是什么。
所以我需要的是:
var obj = MyTypeBuilder.CreateNewObject(rs.ColumnNames);
List<obj> aListICanFill = new List<obj>();
..
aListICanFill.where(x => x.Equals("")).take(3);
我盲目地尝试了不同的强制转换,甚至未能尝试迭代对象 - 现在我完全卡住了。
有什么办法吗?
http://msdn.microsoft.com/en-us/library/bb882637.aspx 似乎是我应该关注的东西。
我的对象是什么样子的:
【问题讨论】:
-
你到底需要什么语法? {您的对象数组}.Select(...) 或 {您的对象}.Select(...) ?
-
您是否尝试过在课堂上实现
IQueryable?或者你真正想要的是一个List<MyClass>,你可以在.Where()上做? -
所以这个对象将是我的类 - 像
List<thisObject>这样的东西是最好的情况。 -
@RufusL 虽然它作为一个对象返回,而不是一个类......
-
@SemiDemented 如果你想要这个,匿名类不是你应该去的方式。检查此线程stackoverflow.com/questions/191013/… 但是,您可以制作对象列表
List<Object>
标签: c# linq object iqueryable