我上课了:
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 :(得分: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();