转换并获得最大值

时间:2018-08-13 07:36:00

标签: c# linq

我有一个对象列表,该对象具有字符串“ Value1”属性,并且实际上是两倍。

因此,我只想通过转换属性double来从列表中获取最大值和最小值。

那是我的课程。

public class Function
{
    public int Id { get; set; }
    public string Value1 { get; set; }
    public string Value2 { get; set; }
}

我有一个List<Function>,我需要获得最小的“ value1”。顺便说一句,我很确定value1可以转换为double。可以一行执行此操作吗?

4 个答案:

答案 0 :(得分:3)

简单的铸造呢?

myList.Max(x => double.Parse(x.Value1));

答案 1 :(得分:1)

如果您确实想要最小值和最大值,并且确定字符串都是双精度的,那么:

string[] values = new[] { "1.1", "1.5", "2.654987" };

var doubles = values.Select(Convert.ToDouble);

var min = doubles.Min();
var max = doubles.Max();

答案 2 :(得分:1)

LINQ可以使其看起来不错

var sum = list.Select(item => item.Value1).Select(double.Parse).Sum();

您可以将double.Parse函数作为参数传递给Select
请注意,如果double.Parse无效Value1

double将引发异常

答案 3 :(得分:0)

是否对数据库运行语句很重要。如果您这样做并且是在一个连接中进行的,那么您将需要通过“选择”语句和“ SqlFunctions.Replicate”使所有值与“字符串”具有相同的长度,然后“ Max”将起作用。但是,如果您的值包含小数,则会遇到麻烦。摆脱该解决方案的另一种方法是例如使用“ ToList”将所有值提取到内存中。之后,将“ string”值转换为“ double”,以使“ Max”语句正常工作。但缺点是所有值一次都被提取到内存中