我的WCF服务函数返回类型是Dictionary(Of String,String).所以我必须将我的数据集转换为字典.
这是我的数据集示例.
帐户帐户名称
abc abc1
abc abc2
abc abc3
xyz xyz1
xyz xyz2
xyz xyz3
xyz xyz4
pqr pqr1
pqr pqr2
pqr pqr3
pqr pqr4
pqr pqr5
pqr pqr6
使用LINQ或不使用LINQ,如何将数据集转换为字典(字符串,字符串)
此致,RN
这里有一些使用LINQ的选项.
最直接的"单线"是:
Dim dictionary = ds.Tables(0).Rows.OfType(Of DataRow)() _ .ToDictionary(Function (dr) dr.Field(Of String)(0), _ Function (dr) dr.Field(Of String)(1))
我认为VB.NET lamdba语法有点难看,所以我喜欢把它们拉出来:
Dim fk As Func(Of DataRow, String) = Function (dr) dr.Field(Of String)(0) Dim fv As Func(Of DataRow, String) = Function (dr) dr.Field(Of String)(1) Dim dictionary = ds.Tables(0).Rows.OfType(Of DataRow)().ToDictionary(fk, fv)
这甚至可能太难看了,所以这是一个选择:
Dim fn as Func(Of Integer, Func(Of DataRow, String)) = _ Function (n) _ Function (dr) _ dr.Field(Of String)(n) Dim dictionary = ds.Tables(0).Rows.OfType(Of DataRow)().ToDictionary(fn(0), fn(1))
甚至按列名称:
Dim fs as Func(Of String, Func(Of DataRow, String)) = _ Function (s) _ Function (dr) _ dr.Field(Of String)(s) Dim dictionary = ds.Tables(0).Rows.OfType(Of DataRow)() _ .ToDictionary(fs("AccountName"), fs("Account"))
我希望这些帮助.