为 Linq Select 语句创建匿名对象

问题描述 投票:0回答:2

我得到一个字符串数组,其中包含属性名称。我只想在获取数据时加载这些属性,在本例中是通过实体框架从数据库获取数据。比如:

var result = db.myTable
               .Where(x => x.Id == ”someValue”)
               .Select(y => new {y.someProperty, y.someOtherproperty, ...});

如何从字符串数组创建匿名对象。我想要这样的东西:

var MyObj = new {};
foreach(var I in MyStrinArr)
{
   ... Add the properties here ...
}
var result = db.myTable.Where(x => x.Id==”someValue”).Select(y => obj);
c# linq
2个回答
3
投票

这(直接)不可能,因为匿名类是在编译时“生成”的。迭代字符串数组是在运行时进行的。所以这个没有可比性。

动态 linq 有很多可能性,你应该阅读 ScottGu 的博客 关于这一点:
dynamic-linq

它使用在运行时创建具有属性的类型的技术。下载dynamiclinqcsharp文件并检查源。 DynamicLibrary.cs 中有一个 ClassFactory,它允许您创建类型。

public Type GetDynamicClass(IEnumerable<DynamicProperty> properties)
    


0
投票

using LinqString; // nuget var result = db.myTable .Where(x => x.Id == ”someValue”) .Select("someProperty", "someOtherProperty") .ToList();

© www.soinside.com 2019 - 2024. All rights reserved.