编程语言
首页 > 编程语言> > c#-从另一个列表中过滤列表对象

c#-从另一个列表中过滤列表对象

作者:互联网

我的C#.NET 3.5 Win Forms应用程序中有以下类:

class Field {

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


}

以及一个list fieldList,它是一个checkedlistbox的数据源.此列表框显示了我的fieldList集合中的所有不同的objectName.

我想创建另一个包含fieldNames的清单列表框,但只在第一个列表框中显示具有关联的已选中objectName的域名称.

因此,我的问题是如何查询原始objectNames列表的DataSource以返回与所选objectName相关的唯一的fieldNames集?

这不是很容易阅读,所以我举一个例子:

Field1 {

objectName = 'objA'
FieldName = 'FieldA'

}

Field2 {

objectName = 'objA'
FieldName = 'FieldB'

}


Field3 {

objectName = 'objB'
FieldName = 'FieldA'

}

Field4 {

objectName = 'objC'
FieldName = 'FieldC'

}

因此,假设我在复选框中选择了objectNames objA和objB.然后,我返回的字段将是“ FieldA”和“ FieldB”.

如何使用LINQ或过滤我的通用字段列表来实现此目的?我可以利用列表可用的“选择”或“在哪里”方法吗?

解决方法:

var selectedNames = ... // List of selected names
var selectedFields = (from f in fieldList
                      where selectedNames.Contains(f.objectName)
                      select f.FieldName).Distinct().ToList();

标签:checkedlistbox,generics,c
来源: https://codeday.me/bug/20191210/2103671.html