【发布时间】:2018-12-12 01:19:27
【问题描述】:
我有一个我想使用 Linq OrderByDescending 排序的项目列表。 排序作为值传递给 switch 语句。
items.OrderByDescending((SomeObject)i => {
switch(cond)
{
case "conditionA":
return (float)i.MemberA;
case "conditionB":
return (long)i.MemberB;
case "conditionC":
return (int)i.MemberB;
}})
我担心的是这个循环的性能。 有没有办法预先定义返回值并将其传递给循环一次?
【问题讨论】:
-
您可以使用 default: 条件,如果没有匹配项则使用该条件。可以预定义默认值。
-
这看起来像是 X/Y 问题。为什么您的
Member_属性尚未正确输入? -
你实际上不能用
floats 对ints 进行排序;无论如何,您最终都会选择其中一个。所以你不妨把所有东西都比作float。
标签: c# performance linq