我有一个Linq查询,它返回IQueryable<ClassX>
类型的对象。我想将此对象放入类类型ClassX
的对象中并收到错误:
无法将
'System.Linq.IQueryable<ClassX>'
类型隐式转换为'ClassX'
。存在显式转换(您是否错过了演员?)
这就是我要做的事情:
GetResult()
会返回IQueryable<ClassX>
个对象。
ClassX x = GetResult();
我尝试过像ClassX x = (ClassX)(GetResult());
这样的投射 - 但它不起作用。
答案 0 :(得分:4)
您可能知道,您的LINQ查询返回IQueryable<ClassX>
。这表示具有结果集的查询。它不代表结果本身的对象,所以你不能像那样抛出它。
如果您的方法只返回一个ClassX
对象,则可以使用.Single()
从结果集中获取该对象:
ClassX x = GetResult().Single();
如果结果集可能为空,则为.SingleOrDefault()
:
ClassX x = GetResult().SingleOrDefault();
答案 1 :(得分:2)
IQueryable是对象的“集合”,因此要指定“集合中元素的类型项”,您需要选择一个项目。
根据您的需要首先,Skip,FirstOrDefault可让您从IQueryable / IEnumerable中选择一个项目:
ClassX x = GetResult().FirstOrDefault();
答案 2 :(得分:0)
var temp = GetResult().AsEnumerable().SingleOrDefault();