LINQ联接查询结构导致CS0119错误

时间:2018-09-20 16:14:59

标签: c# asp.net-mvc linq

我正在尝试将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结构?

1 个答案:

答案 0 :(得分:2)

您不能在一个类型上运行LINQ select,而只能在该类型的集合上运行-即实现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模型中定义的实际名称匹配。