Linq-to-Entities,比较不同字段/列中的int值并返回最大值

时间:2012-09-10 12:30:51

标签: c# linq-to-entities

我有一个包含8个整数值的记录表:

TableChild:
    Parent    Name    int1    int2    int3    int4    int5    int6    int7    int8
    a         w       1       3       2       0       1       3       4       3
    a         x       4       5       2       5       3       2       4       6
    b         y       5       3       5       3       1       1       3       4
    b         z       4       1       2       4       2       2       4       2

我需要找到'x'的最大值。 我也(单独)需要在父表'a'的整个表中获得最高值。

var query = from row in TableChild
            where row.Name == x
            select new 
            {
                Parent = row.Parent,
                Name = row.Name,
                status = GetHighestValueOfRowInTableChild, 
                ...           
            };

返回{(a,x,6)}

var queryParent = from row in tableParent     
                  where row.Name == a
                  select new 
                  {
                      Parent = row.Name,
                      status = GetHighestValueOfAllChildItemsInTableChild,
                      ...
                  };

返回{(a,6)}

我玩过.Max()并尝试使用表达式,但没有任何运气,因为我应该使用多个连接,但无法弄清楚它们应该如何交互。

2 个答案:

答案 0 :(得分:3)

使用int {X}属性的值创建一个数组,稍后获取数组的最大值

var queryParent = from row in tableParent     
                      where row.Name == a
                      select new 
                      {

                         Parent = row.Name,
                         status = 
                         (new int[]{row.int1,row.int2,row.int3,row.int4,
                         row.int5,row.int6,row.int7,row.int8}).Max();
                          ...

                      };

答案 1 :(得分:2)

除非您获取大量记录并且需要减小数据库响应的大小,否则最好只获取所有列并在客户端执行Max