2014-06-09 51 views
0

我需要根據另一個對象中的值列表返回一個對象的子集。用於比較兩個對象的LINQ查詢?

對象返回:

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

我要選擇基於關閉用戶表上的項目屬性的「項目」的一個子集:

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

回答

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; 
+0

完美的工作。謝謝Servy! –