使用LINQ的EF动态字段选择

时间:2018-12-04 02:00:03

标签: c# entity-framework linq lambda

我有以下选择:

var sortedCodes = Codes
.Where(c => c.Active)
.OrderByDescending(x => x.SortOrder)
.Select(b => new { b.Display, b.NumericCode, b.SortOrder })
.Distinct()
.ToList();

表Code具有许多列,例如NumericCode,TextCode,AlphaCode,ThreeCode,FourCode和FiveCode。我正在使用此表在我的UI中构建选择。有什么办法可以创建一些动态代码,以便我可以传入列名以用作值?

上面的选择看起来像这样:

.Select(b => new { b.Display, "TextCode", b.SortOrder })

我当时以为我可以使用一个表达式,但是我不认为这正是我所需要的,因为它实际上是将lambda作为值打印出来的。

var arg = Expression.Parameter(typeof(Code), "b");
var body = Expression.Property(arg, valueColumn);
var lambda = Expression.Lambda<Func<Code, string>>(body, arg);

var sortedCodes = Codes
.Where(c => c.Active)
.OrderByDescending(x => x.SortOrder)
.Select(b => new { b.Display, Value=lambda, b.SortOrder })
.Distinct()
.ToList();

0 个答案:

没有答案