2013-04-12 3 views
1

В приложении Windows C# 2008 у меня есть следующий оператор linq to sql, который указывает на базу данных r2 сервера SQL Server 2008. Следующий запрос возвращает значение null. Но есть записи, которые нужно извлечь.LINQ to SQL using C#

// Код

string SubmissionPkgID = "valid string value"; 
    var varGoodTransCount = (from t in rData.Transactions 
    join iw in rData.Ibooks on t.ImportID equals iw.ImportID 
    join ip in rData.IPackages on iw.PID equals ip.PID 
    where (ip.trc_num != null) && ip.trc_num == SubmissionPkgID 
    group ip by ip.trc_num into g 
    select new { trc_num = g.Key, Frequency = g.Count() }).FirstOrDefault(); 

Примечание: SubmissionPkgID действительно содержит допустимое значение. Где я worng?

+0

http://meta.stackexchange.com/questions/10647/how-do-i-write-a-good-title –

+0

Вы пробовали профилировать этот запрос? –

ответ

1

Ваш запрос linq выглядит нормально, он должен работать. rData.IPackages.trc_num is int или mumeric right? , поэтому вы можете использовать HasValue вместо проверки значения Null.

// Код

string SubmissionPkgID = "valid string value"; 
var varGoodTransCount = (from t in rData.Transactions 
         join iw in rData.Ibooks on t.ImportID equals iw.ImportID 
         join ip in rData.IPackages on iw.PID equals ip.PID 
         where (ip.trc_num.HasValue) && ip.trc_num == SubmissionPkgID 
         group ip by ip.trc_num into g 
         select new { trc_num = g.Key, Frequency = g.Count() }) 
    .FirstOrDefault(); 

Надеется, что это поможет.