LINQ查询比较两个对象?

时间:2014-06-09 19:41:51

标签: c# .net json linq

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

要返回的对象:

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

我想选择" Items"的一部分。基于User表上的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位于用户订阅中的标题列表中。

...例如

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: "..."}
        ] 

1 个答案:

答案 0 :(得分:2)

这里有两个操作,一个用于将用户序列压缩到下标序列中,然后用每个Title属性上的项目加入订阅:

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