在对象列表(组合列表)上使用 LINQ 获取与用户相关的信息

Get information relevant to user using LINQ on Object list ( Combined lists )

我有照片列表和相册列表。我创建了一个类型对象列表来组合它们。现在我正在尝试使用 LINQ,以便我可以根据 userId 和相册中包含的照片检索相册。

任何人都可以帮助我了解如何检索上述内容吗?

为了做到这一点,我正在使用 LINQPAD,因此我将在此处附上一张照片。

你需要的是 join:

var query= from photo in _photos
           join album in _albums on photo.AlbumId equals album.ID
           where album.UserId==1
           select new {album, photo};

您无法从 object 类型访问 属性(除非您使用 Reflection to get property value in c#)。这就是您收到错误的原因。

如果你想根据userId和相册中包含的照片检索相册,你可以使用linq to object如下

var result = (from p in _photos
             join a in _albums on p.AlbumId equals a.Id
             where a.UserId==1
             select new { p.Title, a.Title}).ToList();
// It returns `Anonymous type`

您还可以创建一个 class 来存储您的值,如下所示

public class Result
{
    public string AlbumTitle { get; set; }
    public string PhotoTitle { get; set; }
    public string Photo_ThumbnailUrl { get; set; }
    // Any properties as you wish
}

var result = (from p in _photos
                 join a in _albums on p.AlbumId equals a.Id
                 where a.UserId==1
                 select new Result { PhotoTitle = p.Title, AlbumTitle = a.Title, Photo_ThumbnailUrl = p.ThumbnailUrl}).ToList();