在LINQ中使用其他值进行完整对象投影

Cod*_*rue 7 c# linq projection

是否可以投影对象的每个属性并添加更多内容,而无需专门列出所有属性.例如,而不是这样做:

   var projection = from e in context.entities
                    select new QuestionnaireVersionExtended
                    {
                        Id = e.Id,
                        Version = e.Version,
                        CreationDate = e.CreationDate,
                         ... 
                         many more properties
                         ...
                        NumberOfItems = (e.Children.Count())
                    };
Run Code Online (Sandbox Code Playgroud)

我们可以做这样的事情:

   var projection = from e in context.entities
                    select new QuestionnaireVersionExtended
                    {
                        e,
                        NumberOfItems = (e.Children.Count())
                    };
Run Code Online (Sandbox Code Playgroud)

在哪里从e获取具有相同名称的每个属性,并在其上添加"NumberOfItems"属性?

Jar*_*Par 3

不,这是不可能的。LINQ 表达式的 select 子句允许使用生成值的普通 C# 表达式。没有 C# 构造可以像这样通过对象初始值设定项以模板样式方式创建对象。您需要列出属性或使用显式构造函数。