LINQ - 向结果添加属性

Ron*_*rby 12 .net c# linq linq-to-sql

有没有办法将属性添加到除以下内容之外的Linq查询结果的对象?

var query = from x in db.Courses
                select new
                {
                    x.OldProperty1,
                    x.OldProperty2,
                    x.OldProperty3,
                    NewProperty = true
                };
Run Code Online (Sandbox Code Playgroud)

我想这样做而不列出我对象的所有当前属性.有许多属性,我不想在我改变课程时更新此代码.

我还在学习LINQ,感谢您的建议.

Eri*_*ing 7

我想你可以返回一个由新属性和所选对象组成的新对象,如:

var query = from x in db.Courses
                select new
                {
                    Course x,
                    NewProperty = true
                };
Run Code Online (Sandbox Code Playgroud)

  • 我真的在寻找一种方法将属性"注入"我当前的对象.但是谢谢! (2认同)

wei*_*ran 7

添加部分类:

public partial class Courses
{
    public String NewProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以在创建对象后进行分配.

  • 当然,如果你要改变原来的类设计(使它变得局部),你也可以继续添加属性...... (4认同)

Awe*_*own 5

eking的回答将是最简单的方法.

如果这对你不起作用(因为你需要传递结果或其他),并假设你正在处理的类已经定义了你想要设置的属性,你可以创建一个复制构造函数或工厂方法现有实例加上要设置的属性的值:

var query = from x in db.Courses
            select new Course(x, valueOfNewProperty);
Run Code Online (Sandbox Code Playgroud)

或者,如果Course 没有定义属性,您可以将其子类化并使用相同的方法:

var query = from x in db.Courses
            select new CourseWithExtraProperty(x, valueOfNewProperty);
Run Code Online (Sandbox Code Playgroud)

(显然,为你的子类选择一个更好的名字)

但是,除非你真的需要这样做,否则坚持使用eking的解决方案.