【问题标题】:C#: Put member variables into a listC#:将成员变量放入列表中
【发布时间】:2010-05-21 13:51:45
【问题描述】:

假设我有一个方法接受 IList 或类似的东西作为参数:

public void JiggleMyList(IList<string> list)...

有没有一种简单的方法可以传入对象列表的字符串成员?

我的意思是,例如,如果我有一个 Person 对象列表,它公开了一个名为 FullName 的字符串属性,有没有一种快速的方法可以将所有 Person 对象的 FullNames 填充到方法参数中,或者我必须创建一个新的 List 并遍历 Person 对象:

List<string> fullNames = new List<string>;
foreach (Person person in people)
{
  fullNames.Add(person.FullName);
}
JiggleMyList(fullNames);

我经常遇到这种情况,如果有捷径就好了。

非常感谢

大卫

【问题讨论】:

    标签: c# list


    【解决方案1】:

    如果您使用的是 .NET 3.5,那么您可以使用 LINQ 编写此代码:

    JiggleMyList(people.Select(p => p.FullName).ToList());
    

    Select 方法采用一个 lambda 表达式,用于将源集合中的每个对象转换为某个新值,并将这些新值收集到 IEnumerablt&lt;T&gt; 类型中。 ToList 扩展方法将其转换为 List&lt;T&gt;

    或者,您可以使用查询语法编写相同的内容:

    JiggleMyList((from p in people select p.FullName).ToList());
    

    .NET 2.0 (C# 2.0) 中也提供了类似的功能,您可以使用匿名委托代替(更优雅的)lambda 表达式:

    JiggleMyList(people.ConvertAll(delegate (Person p) { return p.FullName; }));
    

    【讨论】:

    • 我真的需要一本关于 c# 3 的书!
    【解决方案2】:

    var list = people.ConvertAll(x=>x.FullName).ToList();

    【讨论】:

      【解决方案3】:
      people.ToList().ForEach(person => fullNames.Add(person.FullName));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-26
        • 2012-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-09
        相关资源
        最近更新 更多