繁体   English   中英

将现有对象添加到列表

[英]Add existing object to list

我有一个Order类,其中包含一个List<Album>属性。 在初始化时,我有一个Albums列表:

var albums = new List<Album>
{
    new Album { ArtistId = 2, GenreId = 2, Price = 9.99m, Title = "Mine is Yours" },
    new Album { ArtistId = 2, GenreId = 2, Price = 9.99m, Title = "Robbers & Cowards" },
    new Album { ArtistId = 2, GenreId = 2, Price = 9.99m, Title = "Hold My Home" }
};

接下来,我有一个Orders列表:

var orders = new List<Orders>
{
    new Orders { Albums = //code}
};

我想要做的是能够将albums列表中的Albums添加到“ Albums属性中。 本质上,我不想写Albums = {new Album{//code},{//more code}} 我想写类似Albums = {{AlbumId = 1}, {AlbumId = 2}} 等将现有相册添加到列表中。

如果措辞不佳,则表示歉意。

您可以使用LINQ轻松解决此问题:

var orders = new List<Orders>
{
    new Orders { Albums = albums.Where(x => x.AlbumId == 2 || x.AlbumId == 1).ToList() }
};

如果您预先知道自己的ID(例如在另一个集合中),则可以执行以下操作:

var albumIds = new [] { 1, 2, 4 };
var orders = new List<Orders>
{
    new Orders { Albums = albums.Where(x => albumIds.Contains(x.AlbumId)).ToList() }
};

如果您在Album类中具有Id属性,则可以从创建的初始列表中创建字典:

var albumsDict = albums.ToDictionary(a => a.Id);

然后,您可以像这样创建订单清单:

var orders = new List<Orders>
{
    new Orders { Albums = new List<Album>() { albumsDict[1], albumsDict[2], albumsDict[someId] } 
}; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM