【问题标题】:C# .NET 3.5 - Performing list like operations on members of a listC# .NET 3.5 - 对列表成员执行类似列表的操作
【发布时间】:2009-01-24 04:45:14
【问题描述】:

我有一个字段对象,我创建了一个字段列表:

class Field {

string objectName;
string objectType;
string fieldName;
string fieldValue;

//constructor...

}



List<Field> fieldList = new List<Field>();

假设我想查询此列表以返回不同对象名称的集合(然后插入到选中列表框中。我该怎么做呢?

我想一些 LINQ 魔法可以解决这个问题?

【问题讨论】:

  • 下载 LINQpad,linqpad.net。这是学习 LINQ 的简单方法

标签: c# list


【解决方案1】:

表达式应该从定义的列表中返回一个不同对象名称的列表。我将其转换为列表,因为 CheckedListBox DataSource 属性的文档表明它需要实现 IList 或 IListSource,而不仅仅是 IEnumerable。

((ListControl)cbListBox).DataSource = fieldList.Select( f => f.objectName )
                                               .Distinct()
                                               .ToList() );

如果以 ListControl 的形式访问 checkedListBox 无法访问 DataSource(有时是 docs 谎言),您可以尝试:

cbListBox.Items.AddRange( fieldList.Select( f => f.objectName )
                                   .Distinct()
                                   .ToArray() );

【讨论】:

    【解决方案2】:

    这些工作中的任何一个

    使用变量

    1) var fieldNameCollection = from f in fieldList select f.FieldName; 2) Lambda 语法 var fieldNameCollection = fieldList.Select(f => f.FieldName);

    或者,您也可以不使用 var,而是使用 IEnumerable fieldNameCollection = fieldList.Select(f => f.FieldName);

    【讨论】:

      【解决方案3】:
      var q = from Field f in fileldList select f.objectName;
      
      chkBoxList.DataSource = q.Distinct();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多