对于以下情况:
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) )
我无法找到一种方法来检查总积分何时相等,然后查找正确趋势其他明智的检查仅限总积分
答案 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
我允许你进行空检查:)