【问题标题】:Add New property to objects in List and return new List将新属性添加到列表中的对象并返回新列表
【发布时间】:2013-10-22 13:16:36
【问题描述】:

如何将新属性添加到 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

【问题讨论】:

  • 我不认为你可以比选择new { p, IsMale = true } 更好。
  • @MarcinJuraszek 在 linq 中是不可能的吗?
  • 你做不到。您不想使用的匿名类型是尽可能获得所需的结果。
  • @SubinJacob 您必须在代码中指定 Person 类的所有现有属性,这就是您不想做的事情。您可以尝试使用反射,但我认为这不是一个好主意。而且我在这里没有其他事情可做。
  • 您只需要这样做一次还是更频繁地使用这个所需的功能?

标签: c# .net linq


【解决方案1】:

您要求的更多时候是Dynamic Languages 的功能。在 C# 中,您列出的选项与它一样好。至少在当前版本中。

【讨论】:

    【解决方案2】:

    您可以尝试使用带反射的动态 linq 来实现这一点。一个很好的例子如下所示

    Create new PropertyInfo object on the fly

    【讨论】:

      猜你喜欢
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      相关资源
      最近更新 更多