2010-12-10 3 views
2
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 является список и EmailUid это структура внутри структуры мы имеем две опции, какКак я могу использовать счетчик запросов Linq. записи в запросе

public int EmailId; 
public string Uid; 

это ..

поэтому я выполнения запроса, но я не в состоянии подсчитать, как много записи в этом запросе ...

спасибо ....

ответ

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(); 
+0

Привет Дорогой, он не работает для u, предлагая, чтобы он дал мне ошибку, точно так же, как..Лочная последовательность не может использоваться в LINQ to SQL реализациях операторов запроса, кроме оператора Содержит. – 2010-12-10 09:33:14

+0

@Jitendra, какая ошибка вы получаете? – 2010-12-10 09:34:00

+0

Локальная последовательность не может использоваться в реализациях LINQ to SQL операторов запроса, кроме оператора Содержит – 2010-12-10 09:37:01

1

Вы пытаетесь присоединиться к SQL таблицу с помощью Linq-SQL с внешним List, который я не думаю, что поддерживается

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(); 
1

Если это всего лишь несколько идентификаторов в списке, тогда вы можете использовать Содержит. Это будет проходить каждое целое число SQL в качестве параметра:

var emailToProcess = from a in db.EmailNotToProcess 
        where !EmailUids.Select(u => u.Uid).Contains(a.ENTPUId) 
        select b; 

int count = emailToProcess.Count(); 

ПРИМЕЧАНИЕ:

Если есть 1000-идентификаторов в EmailUids, то вам придется пересмотреть свою стратегию. Либо переместите список идентификаторов в таблицу SQL (поэтому LinqToSQL может выполнять перевод из LINQ в исходный SQL), или вам придется отбросить весь набор строк для EmailNotToProcess, а затем выполнить соединение на клиенте.

Трудно посоветовать, не зная, сколько данных вы имеете в каждой таблице/списке.

Смежные вопросы