我有两张桌子
我正在尝试编写一个LINQ查询,我想在表1中选择所有内容,而不是CaseStatusID,我想返回实际状态(对应于表2中的CaseStatusID)。
我有查询但我错误Cannot convert expression type 'System.Collections.Generic.List<CaseId:int, Status:string>' to return type 'System.Collections.Generic.List<Data.Cases>'
我找不到一个很好的例子来帮助我。我怎样才能做到这一点?
public List<Case> GetAllCases()
{
var result = (from c in _Context.Cases
join s in _Context.CaseStatus on c.CaseStatusId
equals s.CaseStatusId
select new { c.CaseId, c.CaseStatu.Status }).ToList();
return result;
}
答案 0 :(得分:3)
您的返回类型与声明的返回类型List<Case>
不匹配。当您select new {}
时,实际上是从linq表达式返回一个匿名对象。你可以像这样解决它:
public List<Case> GetAllCases()
{
var result = (from c in _Context.Cases
join s in _Context.CaseStatus on c.CaseStatusId
equals s.CaseStatusId
select new Case { CaseId = c.CaseId, CaseStatus = c.CaseStatu.Status }).ToList();
return result;
}
选择数据时请注意new Case{}
。您可能需要更改CaseId
和CaseStatus
属性以匹配Case
类中的实际属性。
更新:要澄清,您需要一个看起来最低限度的Case
课程:
public class Case {
public int CaseId { get; set; }
public string CaseStatus { get; set; }
}
答案 1 :(得分:0)
我认为问题出在select语句中,你应该返回Case的对象列表:
public List<Case> GetAllCases()
{
var result = (from c in _Context.Cases
join s in _Context.CaseStatus on c.CaseStatusId
equals s.CaseStatusId
select new Case () { CaseId = c.CaseId, CaseStatusId = c.CaseStatusId }).ToList();
return result;
}
答案 2 :(得分:0)
您正在创建匿名类型列表并返回案例列表。这就是问题