LINQ to SQL возвращает неверные результаты - PullRequest
1 голос
/ 31 июля 2011

Я пытался решить эту проблему весь день ..: - (

Я использую C # с MSSQL и запрашиваю через LINQ

У меня есть коллекция, хранящаяся в переменной studWithTuiDisc, она содержит следующие данные (показанные по ссылке ниже)

image http://secompeusc.com/images/orig.png

При использовании этой переменной в качестве ссылки для других операторов LINQ результаты очень сильно отличаются, до этой публикации я проводил эксперименты, чтобы проверить, действительно ли я не виноват, что были возвращены неверные результаты:

(1) Я пытался выполнить итерацию по studWithTuiDisc, а затем проверял отношения только в select clause, так как уверен, что это вернет желаемый результат (см. Ниже)
Код:

var xxx = (from a in studWithTuiDisc  
           select new 
           { 
             please = a.StudentId, 
             help = _conn.EEnrolledSubjects
                    .Where(m => m.StudentId == a.StudentId)
                    .Select(m => m.StudentId)
                    .FirstOrDefault() 
           }).Distinct();

Выход:
Контрольный экспериментальный вывод http://secompeusc.com/images/xxx.png

Как мы видим, значения studWithTuiDisc являются единственными значениями, содержащимися в xxx

(2) Теперь я попробовал подход, который доставил мне много головной боли (см. Ниже)
Код:

var zzz = (from a in studWithTuiDisc
           join b in _conn.EEnrolledSubjects on a.StudentId equals b.StudentId
           select new { please = a.StudentId, help = b.StudentId }).Distinct();

или

var zzz = (from a in studWithTuiDisc
           from b in _conn.EEnrolledSubjects
           where a.StudentId == b.StudentId
           select new { please = a.StudentId, help = b.StudentId }).Distinct();

Выход:
Экспериментальный вывод http://secompeusc.com/images/zzz.png

Учитывая, что мы уже знаем значения в studWithTuiDisc и поскольку мы использовали его в качестве фильтра для _conn.EEnrolledSubjects, мы должны ожидать результатов, которые находятся в studWithTuiDisc, но, глядя на снимки экрана, LINQ не возвращается правильные результаты.

Что я делаю не так?
Кто-нибудь испытывал что-то подобное раньше?
Кто-нибудь знает, почему это происходит?

1 Ответ

1 голос
/ 31 июля 2011

Проверьте, что сгенерировано / отправлено на SQL Server, используя DataContext.Log или SQL Profiler.Я думаю, что ваши запросы будут отличаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...