代码之家  ›  专栏  ›  技术社区  ›  Biff MaGriff

LINQ,“参数类型不匹配”错误,这是什么意思,如何解决?

  •  2
  • Biff MaGriff  · 技术社区  · 16 年前

    我用亚音速3.0作为我的DAL。

            var myDeal = (from u in db.Users
                      select new
                          {
                              UserID = u.UserID,
                              UserRoleID = (from ur in u.UserRoles where u.UserRoleID == ur.UserRoleID select ur).FirstOrDefault().UserRoleID
                          });
        foreach (var v in myDeal) //dies first time here
        {
        }
    

    然后,当我数据绑定或尝试遍历集合时,在运行时会出现“参数类型不匹配”错误。

    我不知道这是怎么回事。

    2 回复  |  直到 16 年前
        1
  •  4
  •   Patrick    16 年前

    其中一个ID字段可以为空吗?

    如果是这样,则需要访问.Value属性

    var myDeal = (from u in db.Users 
            join ur in     
                  select new 
                       { 
                         UserID = u.UserID, 
                         UserRoleID = (from ur in u.UserRoles where u.UserRoleID.Value equals ur.UserRoleID select ur).FirstOrDefault().UserRoleID 
                        });
    

    var myDeal = (from u in db.Users
             join ur in db.UserRoles
            on new {ID = u.UserRoleID.value} equals new {ID = ur.UserRoleID} into tempRoles
            from roles in tempRoles.DefaultIfEmpty()
            select new
            {
               UserID = u.UserID, 
                     UserRoleID = roles.UserRoleID
            }); 
    

    您可以使用tempRoles执行左外部联接。因此,如果没有分配角色,您仍然可以获得userID。

    祝你好运,

    帕特里克。

        2
  •  1
  •   komang    15 年前

    “参数类型不匹配”错误通常是由要绑定的属性与其元素之间的不匹配类型引起的。

    如果我们将Value属性定义如下 公共十进制值