list中,找出某个字段具有最大值的那条记录,怎么写

gzpepco 2012-06-26 05:46:28
例如List.ID,其中最大的ID是100,则要求linq出ID=100的那条记录

请看清楚问题,我是要查询出一条拥有最大值的记录,而不是要获得最大值本身

我的笨办法是先用Max找出最大值,然后再用ID=最大值来查询



是否有更简单的写法呢?

...全文
5816 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnForGrass 2012-06-26
  • 打赏
  • 举报
回复
不好意思,没看清楚,写个全的

public class userList//定义一个userList类
{
public int ID { get; set; }
public string userName { get; set; }
public userList()
{
}
public userList(int id, string name)
{
ID = id;
userName = name;
}
}

想获取最大ID,再用where
调用方法

List<userList> list = new List<userList>()
{
new userList{ID=10,userName="u10"},
new userList{ID=100,userName="u100"},
new userList{ID=20,userName="u20"},
new userList{ID=40,userName="u40"}
};
userList max_item = list.Where(x => x.ID == list.Max(y => y.ID)).FirstOrDefault();
Console.WriteLine(max_item.ID + "\t" + max_item.userName);
/*
100 u100
*/
qxyywy 2012-06-26
  • 打赏
  • 举报
回复
懒了 到项目代码里去拷的


public string[] GetCallingIdByCallingName(string callingname, string defaultcallingname)
{
List<string> callingStrList = new List<string>();
string[] callings = callingname.Split('/');
foreach (string callingStr in callings)
{
string callingId = null;
List<Calling> callinglist = GetCallingList();
if (callinglist.Count <= 0)
{
return callingStrList.ToArray();
}

Calling calling = null;
if (string.IsNullOrEmpty(callingStr))
{
calling = callinglist.Find(c => { return c.CallingName == defaultcallingname; });
if (calling != null) callingId = calling.CallingID;
callingStrList.Add(callingId);
continue;
}
List<string> segmentnames = SegmentHelper.DoSegment(callingStr);
var items = from k in
(from c in callinglist
from s in segmentnames
where c.CallingName.Contains(s)
select c)
group k by k.CallingID into gc
orderby gc.Count() descending
select gc.Key;

if (items.Count() > 0)
{
string key = items.First();
callingStrList.Add(key);
continue;
}
}
return callingStrList.ToArray();
}
  • 打赏
  • 举报
回复
如下,按照降序排序取第一个

public class para
{
public int id { get; set; }
public string s { get; set; }
}


List<para> list = new List<para>()
{
new para{id=1,s="1"},
new para{id=2,s="2"},
new para{id=3,s="3"},
new para{id=4,s="4"}
};
para max_item = list.OrderByDescending(a => a.id).FirstOrDefault();
gzpepco 2012-06-26
  • 打赏
  • 举报
回复
前辈请先看清楚问题。

[Quote=引用 1 楼 的回复:]
int max=list.Max(x=>x.ID)
[/Quote]
EnForGrass 2012-06-26
  • 打赏
  • 举报
回复
int max=list.Max(x=>x.ID)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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