2013-08-01 25 views
-2

我有類聯接的結果:如何從2個表

public class FeedData 
{ 
    private List<FeedItem> _Items = new List<FeedItem>(); 
    public List<FeedItem> Items 
    { 
     get 
     { 
      return this._Items; 
     } 
    } 
} 

public class FeedDataSource 
{ 
    private ObservableCollection<FeedData> _Feeds = new ObservableCollection<FeedData>(); 
    public ObservableCollection<FeedData> Feeds 
    { 
     get 
     { 
      return this._Feeds; 
     } 
    } 
} 

我想要做我的代碼更小,所以我嘗試使用LINQ,但我沒有任何想法如何做到這一點。 這裏是我的代碼

private static FeedData GetFeedFromDatabase(string feedLink) 
{ 
    FeedData feedData = new FeedData(); 
    using (var db = new SQLiteConnection(Application.Current.Resources["DbPath"].ToString())) 
    { 
     var matches = db.Table<FeedData>().Where(feed => feed.Link.Equals(feedLink)); 
     if (matches.Any()) 
     { 
      feedData = matches.Single(); 
      feedData.Items.AddRange(
             db.Table<FeedItem>(). 
             Where(item => item.FeedId.Equals(feedData.Id)) 
            ); 
     } 
    } 

    return feedData; 
} 

我不想使用的AddRange,我想盡可能少使用越好LINQ表達式從FeedData表和FeedItem表獲取數據。可能嗎?

回答

0

你不能因爲沒有FeedData.Items的公共setter。如果沒有setter,則必須依賴List類提供的方法來修改列表。

如果你有一個二傳手,你可以簡單地分配名單:

public List<FeedItem> Items { 
    get { return _Items; } 
    set { _Items = value; } 
} 

feedData.Items = db.Table<FeedItem>() 
        .Where(item => item.FeedId = feedData.Id).ToList();