在Linq查询中使用if语句

时间:2016-06-15 12:21:00

标签: c# linq

对于以下情况:

Id  Total points    Correct Trends
1       12                8
2       12                4
3       10                5
4       10                7
5       10                2

让我说我是Id = 3的人。

我想计算总点数和正确趋势大于我的ID。

如果我使用以下查询,那么我将不会使用Id=2的用户,因为他的Correct Trends少于我的。

var allAbove = (from item in userQuery
               where (item.Id!= myData.Id && 
               item.TotalPoints >= (myData.TotalPoints) &&
               item.CorrectTrends >= (myData.CorrectTrends) ) 

我无法找到一种方法来检查总积分何时相等,然后查找正确趋势其他明智的检查仅限总积分

3 个答案:

答案 0 :(得分:2)

逻辑实际上是直截了当的:

{{1}}

检查总分数是还是总分数正确趋势是否更大。

答案 1 :(得分:1)

由于您只想将CorrectTrends用于打破平局,因此正确的表达式应如下所示:

item.Id!= myData.Id && (
       item.TotalPoints > myData.TotalPoints      // "Wins" on total points
||    (item.TotalPoints == myData.TotalPoints     // Same total points,
    && item.CorrectTrends > myData.CorrectTrends) // but higher correct trends
)

请注意>=需要替换为>,以避免带有关联的项目。

答案 2 :(得分:0)

因为我更喜欢方法链:

Edit -> Convert Indents -> To Spaces

我允许你进行空检查:)