[英]Left join and case clause LINQ in Entity Framework
我需要進行左連接並還要使用選擇運算符。 我的LINQ基本就是這樣並且可以工作:
resultado.Dados =
(
from a in db.AgendaHorario
join b in db.Agenda on a.AgendaID equals b.AgendaID
join c in db.Profissional on a.ProfissionalID equals c.ProfissionalID into d
from e in d.DefaultIfEmpty()
select new
{
id = a.AgendaHorarioID,
Medico = e.Identificacao
});
但是我必須添加一個新字段並將其格式化,然后我的LINQ看起來像這樣:
resultado.Dados =
(
from a in db.AgendaHorario
join b in db.Agenda on a.AgendaID equals b.AgendaID
join c in db.Profissional on a.ProfissionalID equals c.ProfissionalID into d
from e in d.DefaultIfEmpty()
select new
{
id = a.AgendaHorarioID,
Medico = e.Identificacao,
start = a.Horario.ToString("yyyy-MM-dd HH:mm:ss")
}
);
發生此錯誤:
LINQ to Entities does not recognize the method 'System.String ToString(System.String)' method, and this method cannot be translated into a store expression.
如果在db.AgendaHorario.ToList()
和db.Agenda.ToList()
以及db.Profissional.ToList()
添加ToList()或AsEnumerable(),則會出現以下錯誤:
Object reference not set to an instance of an object.
我該怎么辦才能左連接大小寫和字段以及格式化的字段
嘗試在變量中設置字符串,然后將其分配給您的查詢,如下所示:
var myValue = Horario.ToString("yyyy-MM-dd HH:mm:ss"); resultado.Dados = ( from a in db.AgendaHorario join b in db.Agenda on a.AgendaID equals b.AgendaID join c in db.Profissional on a.ProfissionalID equals c.ProfissionalID into d from e in d.DefaultIfEmpty() select new { id = a.AgendaHorarioID, Medico = e.Identificacao, start = myValue } );
嘗試這個:
resultado.Dados =
(
from a in db.AgendaHorario
join b in db.Agenda on a.AgendaID equals b.AgendaID
join c in db.Profissional on a.ProfissionalID equals c.ProfissionalID into d
from e in d.DefaultIfEmpty()
select new
{
id = a.AgendaHorarioID,
Medico = e.Identificacao,
start = a.Horario
}).AsEnumerable().Select(x => new
{
id = x.id,
Medico = x.Medico,
start = x.start.ToString("yyyy-MM-dd HH:mm:ss")
}
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.