C# 从另一个表中获取数据的LINQ查询

C# 从另一个表中获取数据的LINQ查询,c#,linq,C#,Linq,我有两张桌子 我试图编写一个LINQ查询,其中我希望选择表1中的所有内容,但不是CaseStatusID,而是返回表2中CaseStatusID对应的实际状态 我有查询,但我发现错误无法将表达式类型“System.Collections.Generic.List”转换为返回类型“System.Collections.Generic.List” 我没能找到一个好的例子来帮助我。我怎样才能做到这一点 public List<Case> GetAllCases() {

我有两张桌子

我试图编写一个LINQ查询,其中我希望选择表1中的所有内容,但不是CaseStatusID,而是返回表2中CaseStatusID对应的实际状态

我有查询,但我发现错误无法将表达式类型“System.Collections.Generic.List”转换为返回类型“System.Collections.Generic.List”

我没能找到一个好的例子来帮助我。我怎样才能做到这一点

    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;
    }

您的返回类型与声明的返回类型列表不匹配。选择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;
}
public class Case {
    public int CaseId { get; set; }
    public string CaseStatus { get; set; }
}

我认为问题出在select语句中,您应该在该语句中返回事例的对象列表:

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;
}

您正在创建注释类型列表并返回大小写列表。这就是问题所在

axlj,在您的声明CaseStatus=c.CaseStatu.Status中。在表1中,我没有所谓的CaseStatus,因此我不确定它将如何工作。CaseStatus是Case对象上属性的名称。c、 CaseStatu.Status是您表格中的值。如果我没有澄清,我很抱歉。CaseStatus实际上是表,即表2。是的,我没有。我认为现在不拥有它是不可能的。但是谢谢你的回答,我只能根据提供的代码尽力推断。您正在通过Cases.CaseStatusId字段连接两个表Cases和CaseStatus。然后从结果中选择两个字段。您需要一个C对象来表示这些字段。这就是我提供的答案。否决投票的原因?