从类型';System.Linq.IQueryable<;ClassX>';到';ClassX

本文关键字:ClassX gt lt System 类型 Linq IQueryable | 更新日期: 2023-09-27 18:29:40

我有一个Linq查询,它返回类型为IQueryable<ClassX>的对象。我想把这个对象放入ClassX类的对象中,并得到一个错误:

无法将类型'System.Linq.IQueryable<ClassX>'隐式转换为'ClassX'。存在显式转换(是否缺少强制转换?)

这就是我要做的:
GetResult()返回IQueryable<ClassX>对象。

ClassX x = GetResult();

我试过选ClassX x = (ClassX)(GetResult());之类的角色,但没有成功。

从类型';System.Linq.IQueryable<;ClassX>';到';ClassX

您可能知道,您的LINQ查询返回IQueryable<ClassX>。表示具有结果集的查询。它不会在结果本身中表示对象,所以不能像那样强制转换它。

如果您的方法只返回一个ClassX对象,则可以使用.Single()从结果集中获取该对象:

ClassX x = GetResult().Single();

或者.SingleOrDefault(),如果结果集可能为空:

ClassX x = GetResult().SingleOrDefault();

IQueryable是对象的"集合",因此要分配给"集合中元素的类型项",您需要选择单个项。

根据您的需要First、Skip、FirstOrDefault可以让您从IQueryable/IEnumerable:中选择一个项目

ClassX x = GetResult().FirstOrDefault();
var temp = GetResult().AsEnumerable().SingleOrDefault();