为什么C#控制台应用程序没有在LINQ上返回结果选择数据

时间:2017-08-22 18:38:50

标签: c# sql-server linq

我正在使用控制台应用程序编写一个相当复杂的数据库扫描实用程序,但出于某种原因,当我尝试在数据库表上使用数据执行简单的LINQ SELECT时,我遇到了最基本的问题。

当数据库表没有数据时,查询会将控制权返回给控制台应用程序 当表有数据时,SQL Server显示“SUSPENDED”和“ASYNC_NETWORK_IO”。

提前感谢你的帮助。

Program.cs如下所示:

P - Q

DataModels.cs如下所示:

class Program
{
    static void Main(string[] args)
    {
        DataModels dm = new DataModels();
        List<string> lsReturn = dm.ReturnDataFromTableX();
    }
}

1 个答案:

答案 0 :(得分:0)

首先你可以试试

class DataModels
{
    public IEnumerable<string> ReturnDataFromTableX()
    {
        return _DataEntities.<TABLE_NAME>.Select(x => x.<COLUMN_NAME>);
    }
}

它将跟踪表中返回的行,如果您的处理时间不长,那么它应该已经足够了 或者在这种情况下逐块准备就绪,每次真正需要时,将打开连接以读取数据部分:

var page = 0;
var step = 10;
var block = _DataEntities.<TABLE_NAME>.Skip(page * step).Take(step).Select(x => x.<COLUMN_NAME>).ToList();
while (block.Count > 0)
{
    foreach (var item in block)
    {
        yield return item;
    }
    page++;
    block = _DataEntities.<TABLE_NAME>.Skip(page * step).Take(step).Select(x => x.<COLUMN_NAME>).ToList();
}