我有一个代码块:提供类型兼容性和LINQ神秘
List<OneFeat> Feats;
...
List<OneFeat> Results = new List<OneFeat>(0);
foreach (OneFeat Test in Feats)
if (String.Compare(Test.Name, Target, true) == 0)
Results.Add(Test);
return Results;
ReSharper的:
List<OneFeat> Results = new List<OneFeat>(0);
Results.AddRange(Feats.Where(Feat => String.Compare(Feat.Name, Target, true) == 0));
return Results;
这当然工作。然而,它创建一个列表,并将其添加到一个空列表,所以我试图把它简化为:
return Feats.Where(Feat => String.Compare(Feat.Name, Target, true) == 0));
这将无法编译,因为它要铸造。如果我添加转换,它会在运行时失败。
有什么办法可以在不复制结果列表的情况下对其进行编码吗?
这仍然创建一个副本,它只是将复制操作移动到.NET运行时库中。 – 2011-05-25 03:28:19
我没有得到的是为什么投下一个被接受的答案? – Dimitri 2011-05-25 12:22:58