将LINQ结果转换为字符串VB.NET
我有一个模块,可以正确地提取Linq查询并将其写入文本文件。我只需要知道如何将其转换为实际的字符串值。谢谢将LINQ结果转换为字符串VB.NET,vb.net,visual-studio-2010,linq,Vb.net,Visual Studio 2010,Linq,我有一个模块,可以正确地提取Linq查询并将其写入文本文件。我只需要知道如何将其转换为实际的字符串值。谢谢 Imports System.IO Module CheckExists Public objStreamWriter As StreamWriter Public Function SimpleQ4() Dim dc As New DatabaseDataContext Dim q = _ From a In dc.GetTable(Of t
Imports System.IO
Module CheckExists
Public objStreamWriter As StreamWriter
Public Function SimpleQ4()
Dim dc As New DatabaseDataContext
Dim q = _
From a In dc.GetTable(Of tblDealer)() _
Where a.chvDealerName = "Something" _
Select a
Return q.ToString
objStreamWriter = New StreamWriter("path.txt")
objStreamWriter.WriteLine(q)
End Function
End Module
这将在myt文本文件中返回
SELECT [t0].[iD], etc....
由于LINQ延迟执行,在streamwriter实际开始写入数据之前,LINQ查询不会有数据
在花括号内,您正在创建一个匿名类型。要为其设置属性的每一列都位于等号的左侧。如果不想创建和映射所有列,请改用此选项:
From a In dc.GetTable(Of tblDealer)() _
Where a.chvDealerName = "Something" _
Select a
如果您需要查看查询的内容,请在创建streamwriter之前在行中添加
q.ToList()
。以下代码有效
Public Sub textFile()
Dim ddc As New DatabaseDataContext
Dim q = _
(From a In ddc.GetTable(Of Table)() _
Where a.Name = "Something" _
Select a.Name).ToList
For Each item In q
objStreamWriter.WriteLine(item)
Next
End Sub
我认为这是因为你还没有真正“执行”你的查询,因为LINQ的延迟执行。请尝试在查询中选择一个.FirstOrDefault(),它表示FirstOrDefault不是我表格的成员OK,现在我的文本文件为空,表格中确实存在该项我对VB不是很熟悉,但您的函数是否会在Return语句中退出?如果是这样,则意味着streamwriter代码将永远不会运行。你能在VisualStudio中调试代码,这样你就可以看到“q”的值了。它绝对不会运行!
Public Sub textFile()
Dim ddc As New DatabaseDataContext
Dim q = _
(From a In ddc.GetTable(Of Table)() _
Where a.Name = "Something" _
Select a.Name).ToList
For Each item In q
objStreamWriter.WriteLine(item)
Next
End Sub