gpt4 book ai didi

c# - Linq to SQL C# 获取所有子/子子类别中的产品太慢

转载 作者:太空狗 更新时间:2023-10-29 23:16:57 24 4
gpt4 key购买 nike

获取选定主类别的所有子类别中的所有产品的最佳方法是什么?试图在大约 80 个子类别中获取 10000 种产品,但这种方法太慢了。有什么建议么?使用 C# 和 Linq to SQL

//list for the child categories
private List<int> catsChildList = new List<int>();

GetChildCats(123);

//get all the child categories of main category '123'

private void GetChildCats(int _parentCat)
{
var cats = (from c in db2.tbl_cart_categories
where c.ParentID == _parentCat
select new { c.CategoryID });
if (cats.Count() > 0)
{
foreach (var cat in cats)
{
int _cat = Convert.ToInt32(cat.CategoryID);
catsChildList.Add(_cat);
GetChildCats(_cat);
}
}
}

//Get the products
var products = (from p in db2.products_infos
where p.IsEnabled == true
group p by p.ProdID
into g where g.Any(x => catsChildList.Contains(Convert.ToInt32(x.CategoryID)))

返回结果大约需要6秒

最佳答案

有什么区别

var products = 
(
from p in db2.products_infos
where p.IsEnabled == true
group p by p.ProdID
into g where g.Any(x => catsChildList.Contains(Convert.ToInt32(x.CategoryID)))
select g
);

 var tmpList = 
(
from p in db2.products_infos
where p.IsEnabled == true
&& catsChildList.Contains(Convert.ToInt32(p.CategoryID)))
select p
).ToList();

var products =
(from r in tmpList group p by r.ProdID into g select g);

?

也许我的架构不同,但当我尝试使用 Linq2Sql 时,它似乎返回相同的结果,但后者在一次数据库命中中返回所有结果,而前者发出多个请求。 (如果返回的产品数量为 10000,则它将执行 10001 次数据库请求)。

关于c# - Linq to SQL C# 获取所有子/子子类别中的产品太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10014855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com