【问题标题】:LINQ, "Argument types do not match" error, what does it mean, how do I address it?LINQ,“参数类型不匹配”错误,这是什么意思,我该如何解决?
【发布时间】:2010-06-09 16:20:49
【问题描述】:

我是 linq 新手,我正在尝试将数据绑定到匿名类型。

我使用 SubSonic 3.0 作为我的 DAL。

我正在像这样从 2 个表中进行选择

        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
    {
    }

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

我不确定这里发生了什么。

【问题讨论】:

  • 如果您只是迭代它以获取结果,即没有数据绑定,查询是否仍然失败?
  • 是的,我在后面放了一个 foreach,第一次看到它就死了。
  • 如果您在调试器中签入myDeal 的类型是什么?
  • System.Linq.IQueryablef__AnonymousType0> {SubSonic.Linq.Structure.Queryf__AnonymousType0>}

标签: c# linq subsonic3


【解决方案1】:

其中一个 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 执行左外连接。因此,如果没有分配角色,您仍然会获得用户 ID。

我还没有测试过,这只是我的想法。

祝你好运,

帕特里克。

【讨论】:

  • 我无法让它工作 :( 恢复到此记录的活动记录。无论如何,谢谢。
【解决方案2】:

“Argument types do not match”错误通常是由于我们要绑定的属性与其元素的类型不匹配造成的。

RadGridSparkline 中的示例,当我们想绑定其项目源时

“值”类型必须为双精度。

如果我们有 Value 属性定义如下 公共小数 ContractValue { 放;得到; }

将显示此错误

【讨论】:

    猜你喜欢
    • 2020-04-20
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    相关资源
    最近更新 更多