1.LINQ To Entities如何实现查询 select * from tableA where id in (1,2,3,4) ?
2.LINQ分组时如何进行组内排序?另外如何仅返回每组中满足条件的行(如Id最大的)?
3.【LINQ】Select与SelectMany的区别4.关于“LINQ to Entities does not recognize the Method '...' ”问题原因浅析1、定义演示数据类型:
public class TestData
{
public int GrpId { get; private set; }
public int Id { get; set; }
public int IdMod5 { get; private set; }
public string Name { get; set; }
public TestData(int id, string name)
{
Random _random = new Random();
this.Id = id;
this.Name = name;
this.GrpId = this.Id % 3;
this.IdMod5 = this.Id % 6;
}
}
假定已初始化了如图的数据:
2、演示分组时组内排序和组外排序方法:
Console.WriteLine("\r\n演示组内按Name降序和组外按Key.RID升序:");
var numberGroups = from n in testdatas
orderby n.Name descending
group n by new { n.IdMod5, RID = n.GrpId } into g
orderby g.Key.RID
select new { Remainder = g.Key, Numbers = g };
foreach (var g in numberGroups)
{
Console.WriteLine("Numbers with a remainder of {0} when divided by 5:", g.Remainder);
foreach (var n in g.Numbers)
{
Console.WriteLine("Id:{0} Name:{1} RID:{2} IdMod5:{3}", n.Id, n.Name, n.GrpId, n.IdMod5);
}
}
运行结果见下图:
3、演示先分组,然后每组里面仅取满足条件的行组:
Console.WriteLine("\r\n演示先分组,然后每组里面仅取Id最大的行组:");
var lets = from a in testdatas
group a by a.GrpId into grp
let maxId = grp.Max(a => a.Id)
from row in grp
where row.Id == maxId
select row;
foreach (var g in lets)
{
Console.WriteLine("Id:{0} Name:{1} RID:{2} IdMod5:{3}", g.Id, g.Name, g.GrpId, g.IdMod5);
}
运行结果如下图:
合集:
LINQ
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库