[英]How to get one or more array elements in MongoDB using a Linq expression
[英]Get one image from each album using linq expression
我有2張桌子Album
和Images
。 下面是它們的結構。
專輯
AlbumId int
AlbumName nvarchar
圖片
ImageId int
ImageUrl nvarchar
AlbumId int [Foreign Key]
ImageDesc nvarchar
我正在嘗試使用LINQ
從每個相冊中獲取一個圖像[任何圖像],以將其顯示為相冊的封面照片。 我真的不知道僅基於每個專輯獲取一張圖像,因為它需要進行一些連接操作(雖然不確定),並且我對LINQ
和SQL 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.