首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LINQ,“参数类型不匹配”错误,这是什么意思,我如何解决它?

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

Stack Overflow用户
提问于 2010-06-10 00:20:49
回答 2查看 16.7K关注 0票数 3

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

我使用SubSonic 3.0作为我的DAL。

我从2个表中进行select,如下所示

代码语言:javascript
运行
复制
        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
    {
    }

然后,当我使用数据绑定或尝试迭代集合时,我在运行时得到“参数类型不匹配”错误。

我不知道这是怎么回事。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-10 00:54:54

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

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

代码语言:javascript
运行
复制
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 
                    });

您也可以尝试如下所示:

代码语言:javascript
运行
复制
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。

我还没有测试过这个,这只是我的头顶。

祝好运,

帕特里克。

票数 4
EN

Stack Overflow用户

发布于 2011-07-29 11:01:44

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

RadGridSparkline中的示例,当我们想要绑定它的项源时

"Value“类型必须为双精度。

如果我们有如下定义的Value属性,公共小数ContractValue { set;get;}

将显示此错误

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3007746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档