【问题标题】:LINQ query for comparing two objects?用于比较两个对象的 LINQ 查询?
【发布时间】:2014-06-09 19:41:50
【问题描述】:

我需要根据另一个对象中的值列表返回一个对象的子集。

要返回的对象:

public class Item
{
    public string Title {get;set;}
    public Item subItems {get;set;}
}

我想根据用户表上的 items 属性选择“Items”的子集:

public class User
{
    public string ID {get;set;}
    public Subscription[] subscriptions {get;set;}
}

public class Subscription
{
    public string Title {get;set;}
}

因此,每个用户都会有一个订阅数组。我想为特定用户返回一个 Item 对象,其中 Item Title 位于用户订阅中的 Titles 列表中。

例如...

Items:[
{ title: "USA Today",
  otherdata: "..."},
{ title: "WSJ",
  otherdata: "..."},
{ title: "ET Weekly",
  otherdata: "..."}
]

Users: [
{ ID: "joe schmo",
  subscriptions" : [
    { item : "USA Today" },
    { item : "ET Weekly" }
  ]
}...]

在这个例子中,我想返回:

items = [ {title : "USA Today"
           otherdata: "..."},
          {title: "ET Weekly",
           otherdata: "..."}
        ] 

【问题讨论】:

    标签: c# .net json linq


    【解决方案1】:

    您在这里只有两个操作,一个是将用户序列展平为订阅序列,然后将订阅与每个订阅的 Title 属性上的项目进行联接:

    var query = from user in users
                from subscription in user.subscriptions
                join item in items
                on subscription.Title equals item.Title
                select item;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 2020-03-27
      • 1970-01-01
      • 2013-07-17
      • 2021-11-15
      相关资源
      最近更新 更多