C#显式转换错误

时间:2013-11-19 07:45:31

标签: c# list observablecollection

分享以下代码请任何人告诉错误是什么

  try
        {
            OrganoCollection = new ObservableCollection<HRM_Organogram>();

            foreach (var jobTypeDef in LobjWsHrmOeLinking.GetUnOccupiedRecordSearch())
            {


                OrganoCollection.Add(jobTypeDef);
            }
        }
        catch (Exception ex)
        {
            ApplicationClass.Message(ex.Message, "Error", MessageType.Error);

         }

并且函数的定义在下面给出了这个函数通过wcf服务

    public List<HRM_Organogram> GetUnOccupiedRecordSearch()
    {
        List<HRM_Organogram> p_objMaster = new List<HRM_Organogram>();
        try
        {
            using (var context = new CMS_ERPEntities())
            {
                context.ContextOptions.LazyLoadingEnabled = false;
                var l_objMaster = (from OG in context.HRM_Organogram
                                   join OE in context.HRM_OELinking
                                       on OG.OrganoID equals OE.OrganoID
                                   where OE.FinalizeStatus == true
                                   select OG.OrganoID).ToList();

                p_objMaster = (from OG in context.HRM_Organogram
                               where !l_objMaster.Contains(OG.OrganoID)
                               && OG.Isactive==true
                               select OG).ToList();


        }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        return p_objMaster;
    }

错误是:

  

参数类型CMS_ERPClient.Service.HRM_OeLinking.HRM_Organogram是   不适用于CMS_ERPClient.Service.HRM_OrganGram.HRM_OrganGram

1 个答案:

答案 0 :(得分:1)

有多个名为HRM_Organogram的类型,一个在命名空间CMSERPClient_Service.HRM_OElinking中,一个在命名空间CMS_ERPClientService.HRMORganogram中。您正在尝试将后者添加到前者的集合中。查看您的using声明。

如果我可以说,你的命名空间和类型名称太糟糕了!重构它们以获得更具描述性和独特性的名称,您将获得更加愉快的编码体验!

我的猜测是一个是DTO类型,一个是模型类型,你将有一个映射器在某处进行转换。我也猜测这句话对你来说并不意味着很多 - 试着看看这些类型在其他地方是如何使用的,并寻找两个都有using个语句并将一个转换为另一个的代码。