相关疑难解决方法(0)

优化在Sql server中快速运行的LINQ查询?

我想计算相关表的行:

MainTable tbl = tblInfo(id);
var count = tbl.Related_Huge_Table_Data.Count();
Run Code Online (Sandbox Code Playgroud)

问题是:这需要太长时间(大约20秒)才能执行,尽管当我在Sql Server中运行此查询时,它执行时间不到一秒钟.如何在linq中优化此查询?我也试过使用存储过程,但没有运气.

这是tblInfo方法:

public MainTable tblInfo(int id)
{
    MyDataContext context = new MyDataContext();
    MainTable mt = (from c in context.MainTables
                    where c.Id == id
                    select c).SingleOrDefault();
    return mt;
}
Run Code Online (Sandbox Code Playgroud)

我使用LinqToSql,类由LinqToSql生成.

c# linq sql-server linq-to-sql

13
推荐指数
1
解决办法
1480
查看次数

如何让SelectMany使用Join?

鉴于我在Linq To Sql模型中有三个表(Customer,Orders和OrderLines)

客户 - 一对多 - >订单 - 一对多 - > OrderLines

我用的时候

var customer = Customers.First();
var manyWay = from o in customer.CustomerOrders
              from l in o.OrderLines
              select l;
Run Code Online (Sandbox Code Playgroud)

我看到一个查询获得客户,这是有道理的.然后我看到客户订单的查询,然后是每个订单获得订单行的单个查询,而不是加入两个订单.总共n + 1个查询(不包括获取客户)

但是,如果我使用

var tableWay = from o in Orders
               from l in OrderLines
               where o.Customer == customer
               && l.Order == o
               select l;
Run Code Online (Sandbox Code Playgroud)

然后,我没有看到每个订单获得订单行的单个查询,而是看到连接两个表的单个查询.共1个查询(不计入客户)

我更喜欢使用第一个Linq查询,因为它对我来说似乎更具可读性,但为什么L2S不像我在第一个查询中所期望的那样加入表?使用LINQPad我看到第二个查询被编译成SelectMany,虽然我没有看到第一个查询的变化,不确定这是否是我的查询中某些问题的指示.

c# linq-to-sql

5
推荐指数
1
解决办法
397
查看次数

标签 统计

c# ×2

linq-to-sql ×2

linq ×1

sql-server ×1