如何根据列值从查询中选择行。 Webmatrix C#

时间:2013-06-19 13:36:12

标签: c# asp.net razor webmatrix

我正在WebMatrix C#中构建一个站点,并且有一个页面包含需要从数据库填充的多个输入字段。我从中提取数据的表有一个id / value列组合,其中id对应于输入字段id。

下表如下所示 field_data = data field_name =与输入字段匹配的id

id      doc_id     field_data          field_name
------  -------    -------------       ------------   
45680   1549       Astoria Apartments   q4_1Property
45681   1549       1000                 q11_7Arbor
45682   1549       61 Street            q12_8Other[0][]
45683   1549       Cleveland            q12_8Other[0][1]
45684   1549       Ohio                 q12_8Other[1][]
45685   1549       43589                q12_8Other[1][1]
45686   1549       USA                  q12_8Other[2][]
45687   1549       12                   q12_8Other[2][1]
45688   1549       d                    q12_8Other[3][]
45689   1549       13                   q12_8Other[3][1]

我可以这样做:

var queryinputvalue = "SELECT field_data FROM document_data WHERE field_name = @0 AND doc_id = @1";

<input type="text" class=" form-textbox" id="input_4" name="q4_1Property" size="20" value="@db.QueryValue(queryinputvalue, "q4_1Property", 1549)"/>

但是其中一些表单有100多个输入字段,对每个字段进行单独的数据库查询似乎过多。

有没有办法对所有数据进行单一查询,然后从该查询中仅选择我需要的数据?

如下所示,[]中的内容应告诉WebMatrix从查询返回哪一行。

var queryinputvalue = db.Query("SELECT * FROM document_data WHERE doc_id = @1", 1549);

<input type="text" class=" form-textbox" id="input_4" name="q4_1Property" size="20" value="@queryinputvalue.[SELECT row where field_name = 'q4_1Property'].field_data"/>

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你快到了。以下内容获取所有相关行:

var queryinputvalue = db.Query("SELECT * FROM document_data WHERE doc_id = @0", 1549);

然后,您可以使用Linq To Objects查询生成的集合。 FirstOrDefault是您应该使用的扩展方法:

var q4_1Property = queryinputvalue.FirstOrDefault(r => r.field_name.Equals("q4_1Property")).field_data;