相关疑难解决方法(0)

如何在我的DAL中调用时确保我的LINQ查询执行,而不是以延迟的方式执行?

我有一个DAL,它由一堆在我的数据库上执行LINQ查询的方法组成.

如何确保返回说,一个IEnumberable或从数据库中类似的事情之前,我保证LINQ查询执行,然后,而不是在一些延迟的方式才得以执行,使用的结果是什么时候?

我知道我可以在我的方法中调用.ToList()来强制它执行,但这是最好的方法吗?

c# linq delayed-execution linq-to-sql

8
推荐指数
1
解决办法
3149
查看次数

立即执行LINQ-Query的最便宜方法是什么

在为SO答案生成样本数据时,我想到了这个问题.我不喜欢逐个添加DataRows的冗长方式Tbl.Rows.Add,所以我创建了这个伪LINQ查询,除了隐含地添加行之外什么都不做:

Private Function GetData() As DataTable
    Dim years = {"2010/2009", "2009/2008", "2008/2007", "2007/2006", "2006/2005", "2005/2004", "2004/2003"}
    Dim tbl = New DataTable
    tbl.Columns.Add(New DataColumn("Year"))
    ' adds DataRows to the DataTable, need Count to execute the query '
    Dim c = (From y In years Select tbl.Rows.Add(y)).Count 
    Return tbl
End Function
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我根本不需要查询的结果,它的唯一目的是迭代和调用DataTable.Rows.Add.因此,结果已在DataTable本身中可用,而不需要查询.

不可否认,这个问题有点不合理,因为使用fe ToList并没有太大的区别,通常查询的目的是返回一些东西.

但无论如何,当只执行而不是结果重要时,执行LINQ查询的最便宜的方式(就内存消耗,执行时间而言)是什么?

编辑:好的,这个问题是快速拍摄和鸡蛋问题.我想将20行代码减少到一行,但注意到我需要某种类型的DataSource用于LINQ-Query.因此我创建了阵列.但是在这一点上我可以简单地使用for-each循环来添加DataRows.

结论:使用LINQ-Query来获取它的用途:查询.然后这个问题毫无意义,因为没有最便宜的方式,只有返回正确结果的方法.

.net linq vb.net performance

2
推荐指数
1
解决办法
258
查看次数

标签 统计

linq ×2

.net ×1

c# ×1

delayed-execution ×1

linq-to-sql ×1

performance ×1

vb.net ×1