将新属性添加到List中的对象并返回新列表

时间:2013-10-22 04:23:13

标签: c# .net linq

如何将新属性添加到Person对象列表并在linq中返回新列表?

List<person> persons = GetPersonList();

其课程如下所示

public class Person
{
public string Name {get;set;}
}

使用linq时我想添加另一个属性(IsMale = true),该属性设置为true。

我不想select new {prop1= p.Name,IsMale=true}。即我想避免选择所有其他属性来创建这个新属性。这可能吗?

我正在寻找如何用更少的代码来做到这一点。不只是如何!

现在我按照以下方式进行操作

select new {p,IsMale=true}

但在这种情况下,所有旧属性都在p内。 在实际上下文中,Person对象很大,所以我必须避免执行this

2 个答案:

答案 0 :(得分:1)

您要求的内容通常是Dynamic Languages的一项功能。在C#中,您列出的选项尽可能好。至少在当前版本中。

答案 1 :(得分:0)

你可以尝试使用带有反射的动态linq来实现这一点。下面显示了一个很好的例子

Create new PropertyInfo object on the fly