Aja*_*ngh 2 c# linq entity-framework
您好,我对实体框架查询有一个疑问。我从控制器中的一个操作返回此结果。
return q.select(t=> new
{
date1,
date2,
Name,
Status
});
Run Code Online (Sandbox Code Playgroud)
date1,date2 是数据库中的字符串字段,返回逗号分隔的日期。我只想从 date1 开始第一次约会。但无法得到它。有人可以帮我获得第一次约会吗?我尝试了一些类似的事情
date1 = date1.split(',')[0];
date1 = date1.split(',').take(0).firstOrDefault();
Run Code Online (Sandbox Code Playgroud)
但面对这个错误
LINQ to Entities 无法识别“System.String[] Split(Char[])”方法,并且此方法无法转换为存储表达式。
错误是非常不言自明的 - EF 无法创建将执行字符串拆分的 SQL 代码。只能将数据下载到内存中,然后进行分割:
q.Select(t=> new { // translated into SQL
t.date1,
t.date2,
t.Name,
t.Status
})
.AsEnumerable() // moves further execution into memory
.Select(x => new {
data1 = x.data1.Split(',')[0], // now you can use any c# code here
x.data2,
x.Name,
x.Status
});
Run Code Online (Sandbox Code Playgroud)
第一条Select语句被翻译成 SQL 查询:
SELECT date1, date2, Name, Status FROM table
Run Code Online (Sandbox Code Playgroud)
如果您的表有很多字段,则保留它是有意义的,以避免通过网络传输所有这些字段。
接下来您将用于AsEnumerable()在内存中处理数据库查询结果。
第二条Select语句用于利用 C# 代码的所有功能将查询结果投影为您需要的内容,而无需转换为 SQL。
| 归档时间: |
|
| 查看次数: |
10079 次 |
| 最近记录: |