c# – LINQ加入查询结构导致CS0119错误

我正在尝试在一个MVC项目中加入两个不同的类模型,所以我可以命令它们上升/下降.我已经尝试了几种排列,但似乎无法让LINQ查询发挥得很好.关于我做错的任何建议?

var lateContact = from c in JPLatestContact
                  join s in JPStudent on c.ApplicationUserId equals 
                  s.ApplicationUserId
                  orderby c.JPLatestContactDate ascending
                  select s;

我是初学者,但如果我理解正确,“c”和“s”是我自己组成的变量. “JPLatestContact”和“JPStudent”是我想要加入的两个模型/类/表,并且都有“ApplicationUserId”我可以加入它们,我想通过在“JPLatestContactDate”中找到的值来命令所有结果JPLatestContact模型,按升序排列.

根据我上面写的查询,我得到一个CS0119错误“’JPLatestContact’是一个类型,在给定的上下文中无效.”

我不确定我的结构在哪里出错,或者我在某种程度上误用了JOIN结构?

最佳答案 您不能在类型上运行LINQ选择,只能在该类型的集合上运行 – 即任何实现IEnumerable< JPLatestContact>的集合.或者IQueryable< JPLatestContact>,例如List< JPLatestContact>,dbContext.JPLatestContact等.对于JPStudent也是如此 – 你需要一个集合或IQueryable< JPStudent>为了它.

假设您正在查询EF,查询应如下所示:

var lateContact = from c in dbContext.JPLatestContact
                  join s in dbContext.JPStudent on c.ApplicationUserId equals 
                  s.ApplicationUserId
                  orderby c.JPLatestContactDate ascending
                  select s;

确保所有实体名称和属性名称与EF模型中定义的实际名称相匹配.

点赞