Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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#_Linq_Collections - Fatal编程技术网

C# 如何从一个集合转换到另一个集合

C# 如何从一个集合转换到另一个集合,c#,linq,collections,C#,Linq,Collections,我有: 它们每个都有大约6个属性您可以执行以下操作: bar.MyYear = foo.Year 就通用数据处理模式而言,通用映射/约简范式的映射是我们正在寻找的基本原则,如果你不介意这个双关语的话,在LINQ中选择哪些映射,正如@Reed Copsey给出的一个很好的例子 是一个在LINQ将适用的环境中实现这种基于约定的投影/映射的库,如果您有足够复杂的需求,需要在您的上下文中引入另一个库的认知开销,则可能值得为您调查。如果有参考或Foo和Bar之间的身份转换,这是泛型中协变或逆变的一个例

我有:

它们每个都有大约6个属性

您可以执行以下操作:

 bar.MyYear = foo.Year

就通用数据处理模式而言,通用映射/约简范式的映射是我们正在寻找的基本原则,如果你不介意这个双关语的话,在LINQ中选择哪些映射,正如@Reed Copsey给出的一个很好的例子


是一个在LINQ将适用的环境中实现这种基于约定的投影/映射的库,如果您有足够复杂的需求,需要在您的上下文中引入另一个库的认知开销,则可能值得为您调查。

如果有参考或Foo和Bar之间的身份转换,这是泛型中协变或逆变的一个例子

C4.0支持泛型中的协方差和逆变

代码应该类似于:

IEnumerable愚人组=新列表

IEnumerable barlist=傻瓜

如果你 有关这方面的更多信息,请访问:


除了这里没有减少-这是纯地图。@Reed Copsey:是的,v1需要很多工作。我在为“投影”拼字,但你现在知道了,所以我不会把它弄坏@里德·科佩西:你觉得现在更有意义了吗?有些胆小的天才似乎不愿意,并且想做到-1。我很想在这里看到他们精彩的反驳观点:我真想知道为什么我有时会在这个幼稚的网站上浪费时间。呵呵,好吧,我投票支持你反驳-1,尤其是现在它被改写了@里德·科普西——我不明白你为什么要把福娃送去酒吧。bar没有构造函数,而是一堆properties@ooo:我编辑了我的答案,向你展示了如何在没有构造函数的情况下完成这项工作。好奇-为什么否决任何人-这似乎是一个完全合理的答案…?@ChaosPandion:ah,好吧-当之无愧-1那么!谢谢你的解释+我说得很好。然而,从投票模式和对被接受答案的评论来看,共识似乎是他只是想复制这些字段
IEnumerable<Bar> barlist
 bar.MyYear = foo.Year
IEnumerable<Bar> barlist = foolist.Select(
         foo => new Bar(foo.Year)); // Add other construction requirements here...
IEnumerable<Bar> barlist = foolist.Select(
     foo => new Bar() 
                {
                    Year = foo.Year, 
                    Month = foo.Month
                    // Add all other properties needed here...
                });