【发布时间】:2011-09-29 21:22:16
【问题描述】:
我有这些在 sql 中用于大型数据集的工作,效果很好。但是我很难转换为 linq-我是 linq 的新手
Select * from table1 t1, table2 t2 where (t1.RoleId+t1.UserId)!=(t2.RoleId+t2.UserId)。
附带说明,当两个变量分开时,我会得到不想要的结果。
含义如下:where (t1.RoleId != t2.RoleId && t1.UserId != t2.UserId)
在 c# 中,我有两个匿名列表。最后一个 linq 语句效果很好,直到出现空值。没有任何回报。我什至想过使用左连接但没有成功。
那么您将如何使用匿名类型列表处理上述查询?
到目前为止我的 Linq 语句
var roleUserList =
(
from rls in roleResouceList
join user in userResourceList
on rls.FullResource.ToUpper() equals user.FullResource.ToUpper()
orderby rls.RoleID, user.UserID, rls.Res1, rls.Res2, rls.Res3
select new
{
RoleID = rls.RoleID,
UserID = user.UserID,
ServerId = rls.ServerID,
FullResource = rls.FullResource,
RlsRes1 = rls.Res1,
RlsRes2 = rls.Res2,
RlsRes3 = rls.Res3
}).Distinct().ToList();
var missingRoleUserList =
(
from rls in rlsCount
join usr in usrCount
on rls.Res1 equals usr.Res1
where rls.Total > usr.Total
select new
{
UserID = usr.UsrID,
RoleID = rls.RoleID
}).Distinct().ToList();
List<string> outputRoleUserList =
(
from rls in roleUserList
from mis in missingRoleUserList
where (rls.RoleID + rls.UserID) != (mis.RoleID +mis.UserID)
select rls.UserID + ",\"" + rls.RoleID
).DefaultIfEmpty().Distinct().ToList();
【问题讨论】:
-
我想请求一些额外的信息。我想我明白你在找什么,但你能确认或澄清一下吗?在我看来,您想要资源列表中没有“丢失”的所有内容的
UserId,"RoleId,是这样吗?
标签: c# linq list anonymous-types