c# - 将 SQL 函数应用于 LINQ 查询的字段
问题描述
我需要使用 LINQ 从数据库中获取记录集,但是我查询的字段之一需要通过 SQL 函数进行转换。据我了解LINQ查询:
var records = context.Geometries
.Where(x => x.Name == "SomeName")
.ToList();
返回一些 SQL 字符串,如下所示:
select Id, Name, Shape from MyGeometries where Name = 'SomeName'
如果 MyGeometry 类看起来像:
public class MyGeometry
{
[Key]
public Guid Id { get; set; }
public string Name { get; set; }
[Column(TypeName = "geometry")]
public Geometry Shape { get; set; }
}
是否有一些 LINQ 扩展方法可以将 SQL 函数应用于其中一个字段?它可能看起来像:
var records = context.MyGeometries
.ApplySql(x => x.Shape, "ST_Transform", param1, param2...)
.Where(x => x.Name == "SomeName")
.ToList();
那么生成的SQL一定是这样的:
select Id, Name, ST_Transform(Shape, param1, param2...) from MyGeometries where Name = 'SomeName'
或者,当我在 LINQ 中查询它时,是否有任何属性应用于具有函数名称的模型属性,这些属性将始终被调用?像这样的东西:
public class MyGeometry
{
[Key]
public Guid Id { get; set; }
public string Name { get; set; }
[Column(TypeName = "geometry")]
[ApplySql("ST_Transform", param1, param2...)]
public Geometry Shape { get; set; }
}
解决方案
推荐阅读
- python-3.x - gcp:datastore - 使用 Python API 获取总体状态 __Stat_Total__
- swift - 上传到 App Store 时上传失败 ERROR ITMS-90081
- excel - VB.NET:HRESULT 异常:0x800A03EC
- c# - C# 从 ObjectResult 到字符串(或获取值)
- docker - 在 Dockerfile 中使用哪个 docker 基础镜像?
- tizen - Tizen 三星智能电视 - 请在首选项中将日志记录级别设置为调试
- xsl-fo - 将单个页面拆分为 2 个垂直半 XSL-FO
- python - np.random.choice - 无法指定掷硬币的次数
- c# - `[Authorize (Roles="Role")]` 不起作用,User.IsInRole("Role") 始终为 false
- javascript - Createjs 到 PIXIJS 的转换