-3

私はクラスを持っています:

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からデータを取得するためにできるだけ少ない式を使用したいと考えています。出来ますか?FeedDataFeedItem

4

1 に答える 1

0

のパブリックセッターがないため、できませんFeedData.Items。セッターがなければ、Listクラスが提供するメソッドに依存してリストを変更する必要があります。

セッターがあれば、単純にリストを割り当てることができます:

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

feedData.Items = db.Table<FeedItem>()
                   .Where(item => item.FeedId = feedData.Id).ToList();
于 2013-08-01T20:51:55.237 に答える