在对象列表(组合列表)上使用 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();
我有照片列表和相册列表。我创建了一个类型对象列表来组合它们。现在我正在尝试使用 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();