0

我正在使用带有 C# 的 ASP.NET 3.5。

我采用了string如下变量:

string Re = string.Empty; 
string In = string.Empty; 
string deWithT = string.Empty; 
string deWithoutTt = string.Empty; 
string ki = string.Empty; 

我有一个DataSet其中Tables[0]包含下表数据。

Id  Name    Param           Value

87  E       Re              AT
88  E       In              00
89  E       deWithT         VK
90  E       deWithoutTt     CK
91  E       ki              VH

现在,如果我想获得value特定param的 in variable,我需要使用foreachor for loop。但我不想那样做。我想fetch value of each param into respective variable使用linq. 有人帮忙吗?抱歉,我是新手,linq所以我不太了解如何执行此类操作。

4

4 回答 4

3

如果您Param是独一无二的,您可以使用ToDictionary转换为 Dictionary 以获得更好的性能 O(1):

var dic = dt.AsEnumerable()
            .ToDictionary(r => r.Field<string>("Param"), 
                          r => r.Field<string>("Value"));

然后你可以得到值:

Re = dic["Re"];
....
于 2013-05-22T07:33:58.777 回答
2

Dictionar<string,string>在这里将是一个更好的选择,哪里Key可以Param并且Value可以Value来自 DataTable。

你可以做:

    Dictionary<string, string> dictionary = 
                  dt.AsEnumerable()
                  .ToDictionary(r=> r.Field<string>("Param"), r=> r.Field<string>("Value"));
于 2013-05-22T07:34:58.427 回答
0

您可能需要修改您的数据表查询,以便使用参数获取特定行,例如

声明你的参数 var

string str_param="Re";

然后将您的数据表查询更新为这样的内容

DataTable dt1 = GetDataTable("select * from table where param=str_param", null);

然后您可以将结果存储在字符串中

string Re = dt1.Rows[0]["Param"].ToString();
于 2013-05-22T07:41:31.177 回答
0

为参数/值使用字典:

datatable.AsEnumerable().ToDictionary(d=>d.Field<string>("Param"),
                                            v=>v.Field<string>("Value"));
于 2013-05-22T07:36:18.617 回答