C# 使用LINQ查询中的Max-列表中的null值

C# 使用LINQ查询中的Max-列表中的null值,c#,linq,C#,Linq,我正在尝试获取一个最大值(SecKey),因为我有一个空值用于Linq结果给我的第一个值(在本例中是40)。SecKey值应为200。我该如何解决这个问题 我试过这个 SecKey = groupedList.Max(d => string.IsNullOrEmpty(d.SecKey) ? "0" : d.SecKey) 但是没有用 var newData = from list in myList group list by new { list.BadgeNum, lis

我正在尝试获取一个最大值(SecKey),因为我有一个空值用于Linq结果给我的第一个值(在本例中是40)。SecKey值应为200。我该如何解决这个问题

我试过这个

SecKey = groupedList.Max(d => string.IsNullOrEmpty(d.SecKey) ? "0" : d.SecKey) 
但是没有用

var newData = from list in myList
    group list by new { list.BadgeNum, list.ActiveDate, list.EndDate }
        into groupedList
        select new
        {
            groupedList.Key.BadgeNum,
            groupedList.Key.ActiveDate,
            groupedList.Key.EndDate,
            Amount = groupedList.Sum(a => a.Amount)
            SecKey = groupedList.Max(d => d.SecKey)
        };
这是我的列表中的数据

BadgeNum    ActiveDate  EndDate Amount  SecKey
722711      1/1/2014    1/31/2014   10  40
722711      1/1/2014    1/31/2014   10  
722711      1/1/2014    1/31/2014   70  200
电流输出:

BadgeNum    ActiveDate  EndDate Amount  SecKey
722711      1/1/2014    1/31/2014   90  40
BadgeNum    ActiveDate  EndDate Amount  SecKey
722711      1/1/2014    1/31/2014   90  200
预期输出:

BadgeNum    ActiveDate  EndDate Amount  SecKey
722711      1/1/2014    1/31/2014   90  40
BadgeNum    ActiveDate  EndDate Amount  SecKey
722711      1/1/2014    1/31/2014   90  200

这不会发生,因为列表中有
null
s-
Max
将忽略它们

问题是,您用于
SecKey
的数据类型排序
40
优先于
200
。例如,如果将字符串用于
SecKey
,则在这种情况下,
'200'
在词汇上比
'40'
来得早

如果您无法控制数据类型,则可以通过以下方式解决此问题:按升序将组按强制转换为
int
,并取最后一个元素(或按降序排序并取第一个元素),如下所示:

SecKey = groupedList.OrderBy(d => Convert.ToInt32(d.SecKey)).Last().SecKey;

这不会发生,因为列表中有
null
s-
Max
将忽略它们

问题是,您用于
SecKey
的数据类型排序
40
优先于
200
。例如,如果将字符串用于
SecKey
,则在这种情况下,
'200'
在词汇上比
'40'
来得早

如果您无法控制数据类型,则可以通过以下方式解决此问题:按升序将组按强制转换为
int
,并取最后一个元素(或按降序排序并取第一个元素),如下所示:

SecKey = groupedList.OrderBy(d => Convert.ToInt32(d.SecKey)).Last().SecKey;

SecKey是字符串类型还是数字类型?是否尝试过:SecKey=groupedList.Max(d=>d.SecKey)?SecKey是字符串类型还是数字类型?是否尝试过:SecKey=groupedList.Max(d=>d.SecKey)?有意义。。让我更改数据类型以使其有意义。。让我更改数据类型