我只是linq从对象列表中找到最大对象现在我想要从var更改为对象.怎么做
List < MyObject> lt = matchings.ToList();
var wwe = lt.Max(ya => ya.Similarity);
var itemsMax = lt.Where(xa => xa.Similarity == wwe);
MyObject sm =(TemplateMatch) itemsMax;//it gives error here
Run Code Online (Sandbox Code Playgroud)
var不是一种类型.这是一个关键字,意思是"为我填写类型".
Where返回一个集合.您正在尝试将集合强制转换为单个项目.
而不是Where,使用FirstOrDefault.
var itemsMax = lt.FirstOrDefault(xa => xa.Similarity == wwe);
Run Code Online (Sandbox Code Playgroud)
现在你得到一个项目,如果需要可以投射它.
请注意,如果您只需要具有该值的单个项目,则上述方法有效.
如果可能有多个具有最大值的项目 - 并且您想要多个项目 - 请Where与OfType或组合Cast.
var itemsMax = lt.Where(xa => xa.Similarity == wwe);
var allItemsCasted = itemsMax.Cast<NewType>(); // this throws
var typeCompatibleItems = itemsMax.OfType<NewType>(); // this filters
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |