var emailToProcess =
from a in db.EmailNotToProcess
join b in EmailUids on a.ENTPUId equals b.Uid
where a.ENTPUId != b.Uid
select b;
这里的EmailUids是一个List,而EmailUid是struct中的一个struct,我们有两个选项,比如
public int EmailId;
public string Uid;
这个..
所以我正在执行查询,但我无法计算此查询中的记录数...
感谢....
答案 0 :(得分:8)
您可以使用Count()方法:
var emailToProcess = from a in db.EmailNotToProcess
join b in EmailUids on a.ENTPUId equals b.Uid
where a.ENTPUId != b.Uid
select b;
int emailCount = emailToProcess.Count();
答案 1 :(得分:1)
您正尝试通过Linq-SQL加入SQL表,并使用外部List
,我认为不支持
答案 2 :(得分:1)
如果列表中只有少数ID,那么您可以使用Contains。这会将每个整数作为参数传递给SQL:
var emailToProcess = from a in db.EmailNotToProcess
where !EmailUids.Select(u => u.Uid).Contains(a.ENTPUId)
select b;
int count = emailToProcess.Count();
注意:
如果在EmailUids中有1000个ID,那么您将不得不重新考虑您的策略。将ID列表移动到SQL表中(因此LinqToSQL可以执行从LINQ到原始SQL的转换),或者您必须撤回EmailNotToProcess的整个行集,然后在客户端上执行连接。
如果不知道你在每个表/列表中处理了多少数据,就很难建议。
答案 3 :(得分:0)
可能包含:
var emailToProcess =
from mail in
(from a in db.EmailNotToProcess
where EmailUids.Select(e => e.Uid).Contains(a.ENTPUI)
select a).AsEnumerable()
join b in EmailUids on mail.ENTPUId equals b.Uid
where mail.ENTPUId != b.Uid
select b;
int count = emailToProcess.Count();