Linq to Sql - SelectMany

时间:2012-03-05 16:35:12

标签: c# asp.net-mvc linq-to-sql

我正在尝试返回List<Image>,但遇到以下方法遇到问题:

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

我是Linq的新手所以它可能是基本的东西,但希望你能看到我想要做的事情。如果我不清楚请说,我会尽力澄清。

3 个答案:

答案 0 :(得分:8)

你实际上是Where和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 :(得分:1)

我认为您可能更愿意寻找WhereToList

collectionDb.Images.Where(i => i.CollectionId == id).ToList();

答案 2 :(得分:0)

您可能想要使用Where

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