如何连接2个表的结果

时间:2013-08-01 19:25:20

标签: c# linq sqlite microsoft-metro

我上课了:

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表中获取数据。有可能吗?

1 个答案:

答案 0 :(得分:0)

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

如果你有一个二传手,你可以简单地指定一个列表:

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

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