我在SQL数据库中有以下查询:

SELECT a.GroupCode, a.GroupDate 
FROM TableP 
WHERE YEAR(a.GroupDate) = '2023' 
AND a.GroupCode LIKE '0100%';

怎么才能把它变成Lambda表达式呢?我所做的如下:

List<TableP> list = await _context.TablePs
            .Where(x => x.GroupCode.StartsWith(request.GroupCode) && x.GroupDate == request.GroupDate)
            .ToListAsync(cancellationToken);

所以从上面的lambda开始,我想把x.GroupDate改成YEAR(a.GroupDate).然后,我将创建一个参数作为string.

请给我建议.
谢谢.

推荐答案

如果DataType GroupDate为DateTime,则可以使用g.GroupDate.Year和Linq转换为DATEPART(Year,[p].[GroupDate])

示例

var _result = context.TablePs
.Where(d => x.GroupCode.StartsWith(request.GroupCode) 
           && d.GroupDate.Year == request.GroupDate.Year).ToList();

我用Profiler回答了我的问题

SELECT *
FROM [Persons] AS [p]
WHERE ([p].[GroupCode] LIKE N'dd%') AND DATEPART(year, [p].[GroupCode]) = 2023

Csharp相关问答推荐

VB.Net的SON模式导致集合代码不工作

EF Core:看不到任何查询日志(log)?

数组被内部函数租用时,如何将数组返回给ArrayPool?

C#中使用BouncyCastle计算CMac

Unity中的刚体2D运动

XUNIT是否使用测试数据的源生成器?

Rider将.NET安装在哪里

应用程序重新启动后,EFCore列表的BSON反序列化错误

LINQ to Entities中的加权平均值

C#按名称从类获取属性值类型<;t>;,我需要反射吗?

在Windows Plesk上发布ASP.NET Core 7 Web API-错误:无法加载文件或程序集';Microsoft.Data.SqlClient';

在PostgreSQL上使用ExecuteSqlRawAsync的C#11原始字符串文字有区分大小写的问题

EF Core:如何对关系属性进行建模?

C#Microsoft.CodeAnalysis.CSharp.Scriiting不等待并行.对于

如何在ASP.NET Core 8中获取键控服务词典

当`JToken?`为空时?

为什么我的属性即使没有显式地设置任何[必需]属性,也会显示验证?

如何在更新数据库实体时忽略特定字段?

客户端/服务器RPC如何处理全局变量?

如何使ExecuteAsync异步运行