我有一个对象列表,该对象具有字符串“ 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。可以一行执行此操作吗?
答案 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”语句正常工作。但缺点是所有值一次都被提取到内存中