我正在为以下情况寻找一个优雅的解决方案:
我有一个包含List的类
class MyClass{
...
public List<SomeOtherClass> SomeOtherClassList {get; set;}
...
}
Run Code Online (Sandbox Code Playgroud)
第三类叫做Model持有List<Myclass>一个我从外部操作的那个.
现在我想用一个方法扩展Model类,该方法返回所有MyClass实例上的所有唯一SomeOtherClass实例.
我知道有Union()方法和foreach循环我可以很容易地解决这个问题,我实际上做了.但是,由于我是所有C#3 +功能的新手,我很好奇如何在有或没有Linq的情况下更优雅地实现这一点.
我找到了一种方法,对我来说似乎相当笨拙,但它有效:
List<SomeOtherClass> ret = new List<SomeOtherClass>();
MyClassList.Select(b => b.SomeOtherClasses).ToList().ForEach(l => ret = ret.Union(l).ToList());
return ret;
Run Code Online (Sandbox Code Playgroud)
注意:该b.SomeotherClasses属性返回一个List<SomeOtherClasses>.
这段代码远非完美,而且有些问题来自于我必须弄清楚什么是使用C#3的好风格,什么不是.所以,我提出了一个关于该片段的小清单,我很乐意得到一些评论.除此之外,我很高兴听到一些评论如何进一步改进此代码.
ret可能是C#2中的一种方法的一部分,但是我应该能够使用方法链来重新签名这个列表是否正确?或者我错过了这一点?ToList()方法?我想要的只是对选择中的每个成员执行进一步操作.谢谢.
鉴于我有两个列表,如下所示:
var listA = new List<string> { "test1", "test2", "test3" };
var listB = new List<string> { "test2", "test3", "test4" };
Run Code Online (Sandbox Code Playgroud)
我想要第三个列表:
var listC = new List<string> { "test1", "test2", "test3", "test4"}
Run Code Online (Sandbox Code Playgroud)
有没有办法得到这个?