Ниже вы можете найти мою проблему. Мой вид петля только через данные, когда оба «DocentenCompetenties» и «DocentenLocaties» заполняются. Это problen, потому что я хочу, чтобы иметь возможность цикл их, даже если один из них doens't есть какие-либо данныеLinq Joins работает только при наличии всех таблиц
var ShowCompetenties = from d in db.Docent
join dc in db.DocentenCompetenties on d.DocentID equals dc.DocentID
join c in db.Competenties on dc.CompetentiesID equals c.CompetentiesID
join dl in db.DocentenLocaties on d.DocentID equals dl.DocentID
where d.DocentID == id
join l in db.Locaties on dl.LocatieID equals l.LocatieID
select new ShowCompetenties { Docenten = d, Competenties = c, DocentenCompetenties = dc, DocentenLocaties = dl, Locaties = l };
ОБНОВЛЕНИЕ
Текущий Ошибка: исключение типа «System.NullReferenceException» произошло в App_Web_xp01otas.dll, но не был обработан в пользовательском коде Дополнительная информация: ссылка на объект не указывает на экземпляр o ▪ Таблица.
var id = Convert.ToInt32(Session["id"]);
var LeftShowCompetenties = from d in db.Docent
join g1 in db.DocentenCompetenties on d.DocentID equals g1.DocentID into group1
from dc in group1.DefaultIfEmpty()
join c in db.Competenties on dc.CompetentiesID equals c.CompetentiesID
where d.DocentID == id
select new ShowCompetenties { Docenten = d, Competenties = c, DocentenCompetenties = dc};
var RightShowCompetenties = from d in db.Docent
join g3 in db.DocentenLocaties on d.DocentID equals g3.DocentID into group3 from dl in group3.DefaultIfEmpty()
where d.DocentID == id
join l in db.Locaties on dl.LocatieID equals l.LocatieID
select new ShowCompetenties { Docenten = d, Locaties = l, DocentenLocaties = dl };
var ShowCompetenties = LeftShowCompetenties.Union(RightShowCompetenties);
VIEW
<h4>Competenties</h4>
@foreach (var item in Model)
{
if(@item.DocentenCompetenties != null && @item.DocentenCompetenties.DocentID.ToString() != null) {
@item.Competenties.Name @Html.ActionLink("Delete", "DeleteCompetenties", new { id = item.DocentenCompetenties.DocentenCompetentiesID })
}
<h4>Docenten</h4>
@foreach (var item in Model)
{
if(@item.DocentenLocaties != null && @item.DocentenLocaties .DocentID.ToString() != null)
{
@item.Locaties.Name
}
}
Посмотрите на [DefaultIfEmpty] (https://msdn.microsoft.com/library/bb360179 (v = VS.100) .aspx) – strickt01
им работать с @foreach (элемент var в ** Model **) {@ item.Locaties.Name} Я пытаюсь, но это не удалось. Должен ли я переписать запрос? –
Говорят, если вам нужно делать соединения в LINQ, что-то, вероятно, неверно - по крайней мере, между сущностями отсутствует связь. В худшем случае LINQ используется как альтернатива SQL (это не так), и все соединение должно быть заменено на VIEW. По крайней мере, создайте ** правильные отношения ** в вашей модели/сопоставлении. –