当前位置:  开发笔记 > 编程语言 > 正文

LINQ - 向结果添加属性

如何解决《LINQ-向结果添加属性》经验,为你挑选了3个好方法。

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

var query = from x in db.Courses
                select new
                {
                    x.OldProperty1,
                    x.OldProperty2,
                    x.OldProperty3,
                    NewProperty = true
                };

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

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



1> Eric King..:

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

var query = from x in db.Courses
                select new
                {
                    Course x,
                    NewProperty = true
                };


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

2> weiran..:

添加部分类:

public partial class Courses
{
    public String NewProperty { get; set; }
}

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


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

3> AwesomeTown..:

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

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

var query = from x in db.Courses
            select new Course(x, valueOfNewProperty);

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

var query = from x in db.Courses
            select new CourseWithExtraProperty(x, valueOfNewProperty);

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

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

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有