Linq表达式的结果类型

时间:2012-11-09 15:49:44

标签: c# linq

我正在用sql数据库创建一个应用程序,

我得到的数据是这样的:

var vAll= from a in vPRCEntities.tblProducts
          select a;

哪个变量是'vAll'然后?,因为我想在方法中使用它:

private void vGet( ?? vAll)
{
}

2 个答案:

答案 0 :(得分:0)

我觉得答案太过微不足道了。此外,真正的功劳归于查理,他指出了缺失的部分。无论如何它是

尝试:

private void vGet(IEnumerable<Product> vAll)

其中Product必须是tblProducts中的类型:)

答案 1 :(得分:0)

你可以按照建议使用它:

private void vGet(IEnumerable<Product> vAll){ }

请记住,Linq使用延迟执行,这意味着在您从集合中读取之前,查询将不会实际执行。这没关系,但如果您在应用程序的不同部分阅读该集合,则可能会遇到问题。例如,在您有机会获取数据之前,连接可能会关闭。

为了避免这种情况,您可以尝试这样的事情:

var vAll = (from a in vPRCEntities.tblProducts select a).ToList<Product>();

这会强制立即读取集合并将其放入List&lt;&gt;宾语。然后你可以这样编写你的方法:

private void vGet(List<Product> vAll){ } //IEnumerable will also work

由于已经读取了集合并将其放入列表中,因此延迟执行不再起作用。

注意:如果数据量非常大,那么所有数据都将在列表的内存中,这可能不是一个好的解决方案。像大多数事情一样 - 这取决于。