簡體   English   中英

使用linq表達式從每個相冊中獲取一張圖像

[英]Get one image from each album using linq expression

我有2張桌子AlbumImages 下面是它們的結構。

專輯

AlbumId      int      
AlbumName    nvarchar

圖片

ImageId      int
ImageUrl     nvarchar
AlbumId      int [Foreign Key]
ImageDesc    nvarchar

我正在嘗試使用LINQ從每個相冊中獲取一個圖像[任何圖像],以將其顯示為相冊的封面照片。 我真的不知道僅基於每個專輯獲取一張圖像,因為它需要進行一些連接操作(雖然不確定),並且我對LINQSQL Queries具有非常基礎的知識。 我知道如何使用LINQ從表中獲取所有images ,這在這里可能是不適當的。

我在下面的Model類中可以使用Images表進行映射。

ImageDateModel類

public class ImageDataModel
{
    public string ImageUrl { get; set; }
    public string ImageDescription { get; set; }
    public string AlbumId { get; set; }
}

誰能幫我實現這一目標?

UPDATE

要檢索我剛剛做的所有圖像

var images = (from img in db.tblImages select img).ToList();

我認為您希望按相冊對圖像進行分組,然后選擇每個組中的第一項,如下所示:

class AlbumImage
{
    public string AlbumId
    {
        get;
        set;
    }

    public string ImageUrl
    {
        get;
        set;
    }
}

[TestMethod]
public void TestGetImages()
{
    var results = new List<AlbumImage>
    {
        new AlbumImage { AlbumId = "1", ImageUrl = "123.png" },
        new AlbumImage { AlbumId = "1", ImageUrl = "456.png" },
        new AlbumImage { AlbumId = "1", ImageUrl = "789.png" },
        new AlbumImage { AlbumId = "2", ImageUrl = "321.png" },
        new AlbumImage { AlbumId = "2", ImageUrl = "654.png" },
        new AlbumImage { AlbumId = "2", ImageUrl = "987.png" }
    };

    var imageResults = results.GroupBy(g => g.AlbumId).Select(grp => grp.First()).ToList();
}

上面的示例將按相冊將圖像分組,然后為每個相冊選擇第一張圖像。

var results = images.GroupBy(i => i.AlbumId).Select(albumGroup => new { AlbumId = albumGroup.Key, Image = albumGroup.First() })

請注意,您可以在不調用ToList的情況下將其鏈接到第一個查詢,並且根據數據庫提供程序的不同,它可能會將其轉換為數據庫的查詢語言,因此您無需在進行分組之前將整個列表拉入內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM