我不确定最好的方法来解决这个问题。简单的LINQ查询对我来说很简单,但我在这里寻找最有效的方法。
我有2个表,Sliders和SliderItems。 SliderItems有一个FK,指向Sliders Id。
我一直在获取有关特定滑块的信息:
public static List<Slider> GetSlider(Slider sItem)
{
DBContext db = new DBContext();
if (sItem.Id != Guid.Empty)
{
var list = from tbl in db.Sliders
where tbl.Id == sItem.Id
orderby tbl.Id
select tbl;
return list.ToList();
}
}
因此,我需要为我的主页做的是将一组数据拉回到数据列表中。从而结合了随之而来的Slider + SliderItems。
我是否只使用JOIN语句执行正常的LINQ查询并将它们放入返回到我的DataList的通用列表中?
欣赏任何想法和方向。
答案 0 :(得分:1)
如果您的数据库已经具有Sliders和SliderItems之间的外键关系,并且您的LINQ-to-SQL模型包括Sliders和SliderItems,那么搜索Slider会自动检索所有相关的SliderItems:
public static IEnumerable<SliderItems> GetSliderItems(Guid sliderId)
{
using (DataContext dc = new DataContext())
{
Slider result = dc.Sliders.Single(s => s.Id == sliderId);
return result.SliderItems;
}
}
答案 1 :(得分:0)
这似乎没问题,但您已将自己的问题标记为ASP.Net。我的问题是这个列表的大小以及显示此页面的频率是多少?
如果您经常显示它并且它不是太大,我会将滑块表拉入内存然后运行您的查询而不会访问数据库。
事实上,如果可能的话,你可以缓存整个滑块和幻灯片。
即使你最近使用了它,如果它对你的应用程序有意义,那么不必点击数据库就会比优化看起来非常简单的父/子关系更好。我假设您在数据库中有一个索引tbl.Id
?
答案 2 :(得分:0)
我建议你可以使用Linq查询加入并将数据放入列表中。它适用于你。