Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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 - Fatal编程技术网

C# 平均集合中的对象并将其视为同一集合中的新对象

C# 平均集合中的对象并将其视为同一集合中的新对象,c#,winforms,C#,Winforms,我有一个自定义对象的集合,这些对象在UI中镜像 接口(极其简化) 收藏 MyCollection<IMyInterface> Foo; 我现在需要在我的程序中打开两个IMyInterface类型并显示平均数据,以及单个IMyInterface对象: Name: [ asdf ] Data: [ 1234 ] Name: [ qwer ] Data: [ 5678 ] Name: [ zxcv ] Data: [ 0000 ] Name: [ 2 Objects (asdf, qwe

我有一个自定义对象的集合,这些对象在UI中镜像

接口(极其简化)

收藏

MyCollection<IMyInterface> Foo;
我现在需要在我的程序中打开两个
IMyInterface
类型并显示平均数据,以及单个
IMyInterface
对象:

Name: [ asdf ] Data: [ 1234 ]
Name: [ qwer ] Data: [ 5678 ]
Name: [ zxcv ] Data: [ 0000 ]
Name: [ 2 Objects (asdf, qwer) ] Data: [ 3456 ]
我必须能够从这个新的平均值中获得
asdf
qwer

我能做到这一点的最佳方式是什么?我觉得我有三个选择:

  • 使用内部
    IMyInterface
    s的集合。然而,这感觉有点脏 有些属性是不可平均的
  • Foo
    替换为'MyCollection>,在我使用它的地方,检查内部集合的计数
  • 将MyCollection变成一个类似于字典的对象,在这里我可以为每个对象指定一个“组”,然后我可以通过组ID获取对象
  • 欢迎任何建议。

    您可以使用,其中一个很好的示例是.net中的控件树:


    每个IMyInterace都可以有一个imyinterface集合,由您选择如何处理不相关的属性(您可以始终返回null)

    什么决定了哪些项是平均值?您在示例中省略了
    zxcv
    。winforms?wpf?asp?您使用的是什么UI技术?@zxcv用户可以选择确定哪些项是平均值(在我的实际应用程序中,这是由ListView完成的-用户可以激活单个项或选择多个要激活的项)。@MattDavey在这种情况下,UI并没有底层集合那么重要,但这是WinForms。@dav_我认为指出您正在使用的UI技术是非常重要的,因为像WPF这样的东西会为如何解决类似问题提供更多的选择。
    Name: [ asdf ] Data: [ 1234 ]
    Name: [ qwer ] Data: [ 5678 ]
    Name: [ zxcv ] Data: [ 0000 ]
    
    Name: [ asdf ] Data: [ 1234 ]
    Name: [ qwer ] Data: [ 5678 ]
    Name: [ zxcv ] Data: [ 0000 ]
    Name: [ 2 Objects (asdf, qwer) ] Data: [ 3456 ]