我是linq的新手,我正在尝试将数据绑定到匿名类型。
我使用SubSonic 3.0作为我的DAL。
我从2个表中进行select,如下所示
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
{
}
然后,当我使用数据绑定或尝试迭代集合时,我在运行时得到“参数类型不匹配”错误。
我不知道这是怎么回事。
发布于 2010-06-10 00:54:54
其中一个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。
我还没有测试过这个,这只是我的头顶。
祝好运,
帕特里克。
发布于 2011-07-29 11:01:44
“参数类型不匹配”错误通常是由我们想要绑定的属性和它的元素之间的类型不匹配引起的。
RadGridSparkline中的示例,当我们想要绑定它的项源时
"Value“类型必须为双精度。
如果我们有如下定义的Value属性,公共小数ContractValue { set;get;}
将显示此错误
https://stackoverflow.com/questions/3007746
复制相似问题