Я пытался решить эту проблему весь день ..: - (
Я использую 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 не возвращается правильные результаты.
Что я делаю не так?
Кто-нибудь испытывал что-то подобное раньше?
Кто-нибудь знает, почему это происходит?