日期:2014-05-20  浏览次数:20912 次

Linq 数据多字段传回最大值的问题
小弟的问题是在编写linq的代码时  只传回一个字段的最大值时  代码是可以通过的如下 :

Dim 黑三原色最大值 = (From 辨识颜色表 In 颜色数据表.辨识颜色表
                    Where 辨识颜色表.颜色 = "黑" Select 辨识颜色表.三原色R值).Max
Return  黑三原色最大值


功能运作正常  但编写传回同一张表的多字段最大值时 却发生了以下的问题

请问各位大大 这里有办法写成多字段回传最大值吗?  还是只能一栏写一串linq 去传呢?

发生错误的图片:?


------解决方案--------------------
我猜,应该要先有一个类似这样的Class:

public class 三原色最大值
{
    public (不知道什么类型) 三原色R值 { get; set; }
    public (不知道什么类型) 三原色G值 { get; set; }
    public (不知道什么类型) 三原色B值 { get; set; }
}


然后在linq语句最后改成:

var 黑三原色最大值 = from 辨识颜色表 in 颜色数据表.辨识颜色表
                     where 辨识颜色表.颜色 = "黑"
                     select new 三原色最大值
                     {
                          三原色R值 = 辨识颜色表.三原色R值,
                          三原色R值 = 辨识颜色表.三原色G值,
                          三原色R值 = 辨识颜色表.三原色B值,
                     };


那个Max没用过,不确定放在哪

PS:C#写法,不会写VB。。。
------解决方案--------------------
 var 黑三原色最大值 = (from 辨识颜色表 in 颜色数据表
                           where 辨识颜色表.颜色 == "黑"
                           orderby 辨识颜色表.三原色R值 +  辨识颜色表.三原色G值 + 辨识颜色表.三原色B值 descending 
                           select 辨识颜色表).FirstOrDefault();

------解决方案--------------------
先按照 辨识颜色表.三原色R值 倒序排列,然后 取集合第一个就是你想要的最大值所在的行了