2015-05-28 1 views
0

У меня есть таблица, содержащая некоторые идентификаторы на разных изображениях. И с этими идентификаторами я хотел бы получить идентификатор изображения, который совпадает с другой таблицей. Но я не могу заставить это работать.Попытка получить несколько элементов из другой таблицы с несколькими входами с LINQ

Heres, что я получил до сих пор:

public List<Image> ImagesForSession() 
{ 
    var userID = User.Identity.GetUserId(); 
    var newestSes = newSes.GetNewestSession(userID); 

    var imgsOnSes = mtm.GetImagesOnSession(newestSes).Select(i => i.ImgId); 

    var imgs = imgSes.GetImageOnId(imgsOnSes).Select(x => x); 

    return imgs.ToList(); 
} 

Что мне нужно, в конце концов, чтобы иметь возможность вернуть все изображения в списке, так что я могу использовать его в качестве источника данных для повторителя ,

Вот метод, где я нахожу все изображения, которые находятся на сессии

public List<MtoMImg> GetImagesOnSession(int sesID) 
{ 
    var query = _db.MtoMImgs.Where(i => i.SessionId == sesID).Select(i => i); 
    return query.ToList(); 
} 

И последний, вот метод, где я получаю изображения на ID:

public List<Image> GetImageOnId(int ID) 
{ 
    var query = _db.Images.Where(i => i.id == ID).Select(i => i); 
    return query.ToList(); 
} 
+1

В чем проблема? Вы пытаетесь получить все изображения «ImageSession»? Если да, уточните свое вступительное предложение и используйте свои доменные имена. – Nix

+0

Небольшой комментарий к вашему коду '.Select (i => i)' избыточен. И я согласен с @Nix. В чем проблема. – Baximilian

+0

Этот код, который я считаю, тоже не компилирует ... 'GetImagesOnSession' возвращает список. 'GetImageOnId' принимает' int. – Nix

ответ

1

Здесь это утверждение, которое объединяет их вместе. Вам нужно обновить предложение on, чтобы он соответствовал тому, как связаны эти таблицы. Если вы делаете EntityFramework, это становится намного проще. Потому что вы можете, возможно, выбрать Изображения напрямую.

public List<Image> GetImageOnId(int sessionID) 
{ 
    return (
     from sessionImage in _db.MtoMImgs 
     join image in _db.Images on sessionImage.ImageId equals image.Id 
     where sessionImage.SessionId == sessionID 
     select image 
    ).ToList(); 
} 

Вариант 2: вы просто получите изображения. Вам нужно будет узнать больше о том, как работает ваша модель данных, а также использовать EF.

return _db.Images.Where(x=>x.SessionId== sessionID).ToList(); 
+0

Спасибо, что это работает! –

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