【问题标题】:Get multiple MAX values from single query across multiple columns using Linq使用 Linq 从跨多个列的单个查询中获取多个 MAX 值
【发布时间】:2013-09-18 09:57:06
【问题描述】:

我正在尝试从表中选择 3 列的最大值。查询返回的所有字段都是字符串。

我目前所拥有的

var step1 =  from result in t_hsbc_staging_trts_derived_tbl_ac_balance.AsQueryable()
             where result.branch_no == brnchnu
                && result.deal_id == dealid
                && result.group_mbr == grpmem
                && result.ac_type != "RMC"
             select result ;

var branch = from result in step1
             select new {ccbranch = result.cc_branch.Max()};
var sect = from result in step1
           select new { ccsect = result.cc_sect.Max()};
var dept = from result in step1
             select new { ccdept = result.cc_dept.Max()};

foreach (var result in branch)
{
  string cc_branch = result.ccbranch.ToString();
}

我在 foreach 语句中遇到的错误是:

“System.String”类型不支持序列运算符。

必须有更简单的方法来从该表中获取最大值吗?

【问题讨论】:

    标签: c# linq-to-sql


    【解决方案1】:

    您正在调用 result.cc_branch 上的 Max() 函数,该函数本身就是一个字符串。即使成功,也会返回字符串中unicode数最大的字符,即

     string s = "one-two-three";
     Console.WriteLine(s.Max()); // returns 'w'
    

    由于我假设这不是您想要的,并且您想要最大的分支/部门/部门价值,您可以使用:

    string branch = (from result in step1 select result.cc_branch).Max();
    string sect = (from result in step1 select result.cc_sect).Max();
    string dept = (from result in step1 select result.cc_dept).Max();
    

    【讨论】:

    • 你怎么知道 result.cc_branch 是字符串?它没有提到。
    • @Saurabh:OP在问题中提到了,而且这个错误也很有启发性。
    • 有了方法语法会更好step1.Max(r => r.cc_branch)
    猜你喜欢
    • 2020-01-11
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 2022-01-13
    • 2014-04-26
    • 1970-01-01
    相关资源
    最近更新 更多