我是新的C#,EF和LINQ,我正在努力学习(很像一个蹒跚学步的孩子)如何做到这一点,所以很抱歉,如果这是显而易见的
创建LINQ查询时遇到类型转换错误
namespace ABC.Pages
{
public partial class AOmMainComponent
{
[Inject]
MydbContext MydbContext { get; set; }
public IEnumerable<OMSite> OMSites()
{
var Sites = from s in MydbContext.TblOms select new {SiteId = s.OMID, SiteName = s.OMSite };
return (IEnumerable<OMSite>)Sites;
}
}
public class OMSite
{
public int SiteID { get; set; }
public string SiteName { get; set; }
}
}
我试过:
return Sites;
我试过了
return (IEnumerable<OMSite>)Sites;
但两个都不管用。有人能告诉我我做错了什么吗?
谢谢
约翰
更改:
var Sites = from s in MydbContext.TblOms select new {SiteId = s.OMID, SiteName = s.OMSite };
致:
var Sites = from s in MydbContext.TblOms select new OMSite {SiteId = s.OMID, SiteName = s.OMSite };
特别是选择新建{
->选择新建OMSite{
。之后返回站点;
应该可以工作。
您当前代码创建了匿名类型的IEnumerable
,这些类型不能强制转换为IEnumerable
,您的IEnumerable
; 需要返回OMSites()方法。
您需要在投影中创建特定对象:
var Sites = from s in MydbContext.TblOms select new OMSite {SiteId = s.OMID, SiteName = s.OMSite };
您的方法希望返回IEnumerable
,而您的查询正在创建匿名类型的IEnumerable