相关疑难解决方法(0)

最大还是默认?

从可能不返回任何行的LINQ查询中获取Max值的最佳方法是什么?如果我这样做

Dim x = (From y In context.MyTable _
         Where y.MyField = value _
         Select y.MyCounter).Max
Run Code Online (Sandbox Code Playgroud)

当查询没有返回任何行时,我收到错误.我可以

Dim x = (From y In context.MyTable _
         Where y.MyField = value _
         Select y.MyCounter _
         Order By MyCounter Descending).FirstOrDefault
Run Code Online (Sandbox Code Playgroud)

但对于这样一个简单的请求,这感觉有点迟钝.我错过了一个更好的方法吗?

更新:这是后面的故事:我正在尝试从子表中检索下一个资格计数器(遗留系统,不要让我开始......).每个患者的第一个资格行总是1,第二个是2,等等(显然这不是子表的主键).因此,我正在为患者选择最大现有计数器值,然后向其中添加1以创建新行.当没有现有子值时,我需要查询返回0(因此添加1会给我一个计数器值1).请注意,我不想依赖子行的原始计数,以防遗留应用程序在计数器值中引入间隙(可能).我试图让这个问题过于通用我不好.

.net c# linq linq-to-sql

171
推荐指数
10
解决办法
10万
查看次数

Linq查询具有可空和

from i in Db.Items
select new VotedItem
{
    ItemId = i.ItemId,
    Points = (from v in Db.Votes
              where b.ItemId == v.ItemId
              select v.Points).Sum()
}
Run Code Online (Sandbox Code Playgroud)

我得到了这个查询,但是如果没有找到异常的投票则它会失败:

The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type.
Run Code Online (Sandbox Code Playgroud)

我假设它因为sum返回一个int而不是一个可空的int,给一个int一个?作为输入只给出相同的错误,可能导致sum仅适用于int.

有什么好的解决方法吗?

c# linq nullable sum linq-to-sql

69
推荐指数
6
解决办法
6万
查看次数

标签 统计

c# ×2

linq ×2

linq-to-sql ×2

.net ×1

nullable ×1

sum ×1