【发布时间】:2015-07-09 03:55:36
【问题描述】:
我正在使用Linq.Dynamic Library 和 EF6。我试图从我的用户选择的数据库中只选择字段。
但是,返回的只是一个List<object>,我尝试过Cast<dynamic>,我能想到的各种方法,但不管什么对象都有0个字段。
我也尝试过明确声明为IEnumerable,但也没有成功,并且无法调用.ToList(),而没有先调用Cast<T>,这也是不成功的。
将其中一个对象转换为string 时,我得到:"{filenumber=345400, custom2=, custom3=, custom6=4076995332, custom8=4072121417}"。
正在返回数据,我根本无法将其转换为适当的类型。
var query = cmax.dbases
.Where(w => statuses.Any(a => w.statusname == a) && portfolios.Any(a => w.portfolio == a))
.Select(string.Format("new ({0})", string.Join(",", fields)))
.Take(Math.Min((int) takeAmount, count - taken));
var take = await query.ToListAsync();
take.ForEach(data => {
var type = take.GetType();
var properties = type.GetProperties();
var propCount = properties.Count();
properties.ToList().ForEach(prop => {
var name = prop.Name;
});
});
【问题讨论】:
-
@MUG4N 我正在使用 Linq.Dynamic,这不适用,谢谢。
-
@AdamReed,你看过stackoverflow.com/questions/1465700/…
-
@EugenePodskal 感谢您的努力!
-
@AdamReed 奇怪的是,他们决定使用括号而不是花括号,就像在 C# 中用于匿名对象一样。也许这样做正是为了避免需要逃脱大括号。
-
@Alex 是的,如您所见,我在这里使用反射,并返回 0 个属性。我不知道选项2是什么。至于选项 3,我正在使用 NuGet 上提供的库,并且想寻找一个不需要我在库上扩展的选项。我相信应该有一个简单的方法来
Cast返回的对象,我忽略了。
标签: c# linq entity-framework dynamic dynamic-linq