Linq to Sql - SelectMany - PullRequest
       2

Linq to Sql - SelectMany

2 голосов
/ 05 марта 2012

Я пытаюсь вернуть List<Image>, но у меня возникают проблемы со следующим методом:

public List<Image> GetImageByCollection(int id)
    {
        List<Image> images = collectionDb.Images.SelectMany(i => i.CollectionId == id);
        return images;
    }           

Я новичок в Linq, так что, возможно, это что-то простое, но, надеюсь, вы увидите, что я пытаюсьделать.Если мне не ясно, пожалуйста, скажите, и я постараюсь уточнить.

Ответы [ 3 ]

8 голосов
/ 05 марта 2012

Вы на самом деле, что, где и ToList

List<Image> images = collectionDb.Images
                             .Where(i => i.CollectionId == id).ToList();

Select и SelectMany вернут IEnumerable<T> предиката. Например,

IEnumerable<int> collectoinIds = collectionDb.Images
                                             .Select(i => i.CollectionId);

Теперь SelectMany «сгладит» список объектов.

public class Test
{
    IList<string> strings { get; set; } 
}

...

List<Test> test = new List<Test> 
{ 
    new Test { strings = new[] { "1", "2" } },
    new Test { strings = new[] { "3", "4" } },
};

IEnumerable<string> allStrings = test.SelectMany(i => i.strings);

allStrings содержит «1», «2», «3», «4»

1 голос
/ 05 марта 2012

Я думаю, что вы, скорее всего, ищете Where и ToList:

collectionDb.Images.Where(i => i.CollectionId == id).ToList();
0 голосов
/ 05 марта 2012

Вы, вероятно, хотите использовать Where

List<Image> images = collectionDb.Images.Where(i => i.CollectionId == id).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...