【问题标题】:Get information relevant to user using LINQ on Object list ( Combined lists )在对象列表(组合列表)上使用 LINQ 获取与用户相关的信息
【发布时间】:2020-05-03 10:22:12
【问题描述】:

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

谁能帮助我理解如何检索上述内容?

我正在使用 LINQPAD 来执行此操作,因此我将在此处附上一张照片。

【问题讨论】:

  • 将您的示例数据作为文本而不是图像提供给我们。添加代码here或将所有代码复制到帖子中
  • @Anonymous 您能否详细说明样本数据是什么意思?合并这两个列表后,我想要的只是使用 LINQ 并根据用户 ID E.G 1 检索特定用户分配到的所有相册以及相册内的照片

标签: list linq arraylist linqpad tobjectlist


【解决方案1】:

您无法从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`

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

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();

【讨论】:

  • 执行此查询时 this 的返回类型是什么?我现在有点困惑
  • 这能回答你的问题吗?如果您需要任何帮助,请告诉我@Csibi Norbert
  • 它帮助我现在了解发生了什么以及我应该如何解决此类问题。谢谢!
【解决方案2】:

你需要的是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};

【讨论】:

  • 执行此查询时 this 的返回类型是什么?我现在有点困惑。
  • 是的,是一个anonymous type,如果您需要知道结果类型,您需要定义一个自定义类,其中包含您期望的结果
猜你喜欢
  • 2010-11-19
  • 2019-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 2015-07-19
  • 2011-02-01
相关资源
最近更新 更多