-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表达式从FeedData表和FeedItem表中获取数据。是否可以?

4

1 回答 1

0

你不能因为没有公共设置器FeedData.Items。如果没有 setter,您必须依靠List类提供的方法来修改列表。

如果你有一个 setter,你可以简单地分配列表:

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 回答