Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 作为组合框数据源的不同派生对象的列表_C#_Winforms_Binding_Lambda - Fatal编程技术网

C# 作为组合框数据源的不同派生对象的列表

C# 作为组合框数据源的不同派生对象的列表,c#,winforms,binding,lambda,C#,Winforms,Binding,Lambda,我的应用程序由一个winform组成,在这个winform中,可以在图像的顶部绘制框。这些框具有坐标、一个从主FormBox类派生的所有类的类型,以及一个生成的XML中可能的组参数,以便导出 此组参数由用户从组合框中选择。最初,ComboBox是空的,用户可以在一种类型的框上设置一个GroupName,该框将填充相同类型的其他框的ComboBox列表,从而允许将它们分组在一起或不分组 我现在需要组合多种框类型的分组,并且一直在寻找填充这个组合框的方法 对于一种盒子类型,实际上没有问题: cboU

我的应用程序由一个winform组成,在这个winform中,可以在图像的顶部绘制框。这些框具有坐标、一个从主FormBox类派生的所有类的类型,以及一个生成的XML中可能的组参数,以便导出

此组参数由用户从组合框中选择。最初,ComboBox是空的,用户可以在一种类型的框上设置一个GroupName,该框将填充相同类型的其他框的ComboBox列表,从而允许将它们分组在一起或不分组

我现在需要组合多种框类型的分组,并且一直在寻找填充这个组合框的方法

对于一种盒子类型,实际上没有问题:

cboUserField_GroupName.DataSource = (from aBox in someFormData.Boxes
where (aBox is UserContentFormBox) select (aBox as UserContentFormBox)).GroupBy(x => x.GroupName).Select(x => x.First()).ToList();

cboUserField_GroupName.ValueMember = "GroupName";
但是,由于我有两个单独的列表,每个列表都填充了来自FormBox子类的对象集合,因此我希望将ComboBox控件绑定到一个联接列表,无论它是GroupName字符串还是对象都不是很重要。 这没什么作用,主要是因为我无法从一个简单的列表中找出值成员是什么,另外,因为该列表最终被空对象填充:

List<string> groupNames = (from aBox in someFormData.Boxes where (aBox is UserContentFormBox || aBox is VATReturnFormBox) select aBox.GroupName).Distinct().ToList();

cboUserField_GroupName.DataSource = groupNames.ToList();
那么,简而言之,如何将ComboBox控件绑定到一个列表,通过lambda填充从基类派生的对象?绑定应位于GroupName属性上

我是否应该将每个列表返回到一个易于合并的列表?还有其他更好的方法吗?

好的,找到了。 首先,列出两个对象GroupName属性:

List<string> firstList = (from aBox in someFormData.Boxes
where (aBox is UserContentFormBox)
select (aBox as UserContentFormBox).GroupName).Distinct().ToList();

List<string> secondList = (from aBox in someFormData.Boxes
where (aBox is VATReturnFormBox)
select (aBox as VATReturnFormBox).GroupName).Distinct().ToList();
无论如何,谢谢你

List<string> groupNames = firstList.Union(secondList).Where(x => x != null).Distinct().OrderBy(x => x).ToList();
cboUserField_GroupName.Items.AddRange(groupNames.ToArray());
cboVATReturn_GroupName.Items.AddRange(groupNames.ToArray());