【问题标题】:Cannot Implicitly convert anonymoustype#1 to Object无法将匿名类型#1 隐式转换为对象
【发布时间】:2018-04-27 15:23:45
【问题描述】:

我正在尝试加入 LINQ 和 Lambda。但是收到一条错误消息,指出无法将匿名类型#1 隐式转换为 BRAND_NAME_MAP_ID。我对 Lambdas 还很陌生,因此被困在这里。

public BRAND_NAME_MAP_MASTER GetBrandNameBrandNameMapID(int BrandNameMapID)
{
    PFC_BRAND_NAME_MAP_MASTER objBrandNameMap = Db.PFC_BRAND_NAME_MAP_MASTERs
        .Join(SIRDC.INGREDIENT_BRAND_NAME_MAPs,
              a => a.BRAND_NAME_MAP_ID, 
              b => b.BRAND_NAME_MAP_ID,
              (a, b) => new {a, b})
        .Where(x => x.a.BRAND_NAME_MAP_ID == PFCBrandNameMapID)
        .FirstOrDefault(); //Getting error here

    return objPFCBrandNameMap;
}

【问题讨论】:

    标签: c# asp.net linq lambda type-conversion


    【解决方案1】:

    您的查询返回一个包含两个属性的匿名类型,aPFC_BRAND_NAME_MAP_MASTERbINGREDIENT_BRAND_NAME_MAP。看起来您只需要第一个属性,因此只需添加 Select 即可:

    PFC_BRAND_NAME_MAP_MASTER objBrandNameMap = Db.PFC_BRAND_NAME_MAP_MASTERs
        .Join(SIRDC.INGREDIENT_BRAND_NAME_MAPs,
              a => a.BRAND_NAME_MAP_ID, 
              b => b.BRAND_NAME_MAP_ID,
              (a, b) => new {a, b})
        .Where(x => x.a.BRAND_NAME_MAP_ID == PFCBrandNameMapID)
        .Select(x => x.a) /Add this line
        .FirstOrDefault();
    

    【讨论】:

    • 感谢大卫的出色工作。从未有过如此快速的答案。
    猜你喜欢
    • 1970-01-01
    • 2016-01-11
    • 2021-01-06
    • 1970-01-01
    • 2013-06-30
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多