如果通过开头字字符串来获取相应的最高值?

qjw9004 2017-03-05 09:38:15
我有一数据:
contractNO(字段)
AX-001
AX-002
AX-003
BYT-001
BYT-002
CD-01
CD-02

如何获取最大值?
string classNO
当classNO=“CD”时,取值为:CD-02
当classNO=“AX”时,取值为:AX-003
当classNO=“BYT”时,取值为:BYT-002
当classNO=“RE”时,取值为:NULL
下面是我写了一点不知什么弄了!请指点,谢谢
var query = from c in db.ConditionsContracts
where c.contractNO.StartsWith(classNO)
orderby c.contractNO
select c;
...全文
692 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hertz_liu 2017-03-24
  • 打赏
  • 举报
回复

string[] testAry = new string[] { "AX-001", "AX-002", "AX-003", "BYT-001", "BYT-002", "CD-01", "CD-02" };
var result = from key in testAry
		     group key by key.Split('-')[0] into g
		     select g.Max();
foreach (var item in result)
{
          Console.WriteLine(item);
}

// 输出
// AX-003
// BYT-002
// CD-02
cxmcxm 2017-03-13
  • 打赏
  • 举报
回复

List<string> li = new List<string>();
        li.AddRange(new[] { "AX-001", "AX-002", "AX-003", "BYT-001", "BYT-002", "CD-01", "CD-02" });
        var q = from c in li
                group c by c.Split('-')[0] into d
                select new { classno = d.Key, maxno = d.Max() };
q107770540 2017-03-08
  • 打赏
  • 举报
回复
var query = (from c in db.ConditionsContracts
	     where c.contractNO.StartsWith(classNO)
             orderby int.Parse(Regex.Match(c.contractNO,@"(?<=-)\d+").Value) descending 
             select c).FirstOrDefault();
Poopaye 2017-03-05
  • 打赏
  • 举报
回复
var query = (from c in db.ConditionsContracts
where c.contractNO.StartsWith(classNO)
orderby int.Parse(c.contractNO.SubString(classNO.Length + 1)) descending 
select c)
.First();
Poopaye 2017-03-05
  • 打赏
  • 举报
回复
orderby int.Parse(c.contractNO.SubString(classNO.Length + 1)) descending

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧