提问者:小点点

C#Linq查询未返回可枚举集合


我是新的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;

但两个都不管用。有人能告诉我我做错了什么吗?

谢谢

约翰


共2个答案

匿名用户

更改:

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