Как извлечь данные из SQL-запроса на основе отношения данных/идентификатора. Использование ASP.net WebMatrix

Я использую ASP.net WebMatrix

У меня есть SQL-запрос, который выглядит следующим образом:

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

doc_id      field_data      field_name
----------  ----------      ----------
1534        John            f_name
1534        61st Street     f_address

И поля ввода, которые выглядят следующим образом:

<input type="text" id="f_name" name="f_name" value="" />
<input type="text" id="f_address" name="f_address" value="" />

Я хочу, чтобы значение «Джон» отображалось для f_name и «61st Street» для f_address.

Я знаю значение field_data, но не знаю, как извлечь его из запроса, не выполняя отдельный запрос для каждого поля ввода. Я нашел функцию С# под названием .Select(), но не могу заставить ее работать. Вот что я пробовал:

@{
    DataRow[] foundRows;
    foundRows = queryformdata.Select("field_name LIKE 'f_name'");                
}
<input type="text" id="f_name" name="f_name" value="@foundRows.field_data" />

Это дает мне ошибку: Сообщение об ошибке компилятора: CS0411: Аргументы типа для метода «System.Linq.Enumerable.Select (System.Collections.Generic.IEnumerable, System.Func)» не могут быть выведены из использования. Попробуйте явно указать аргументы типа.

Может кто-нибудь помочь мне понять, как сделать эту работу.

Спасибо


person E Benzle    schedule 18.06.2013    source источник


Ответы (1)


Вместо:

@{
DataRow[] foundRows;
foundRows = queryformdata.Select("field_name LIKE 'f_name'");                

}

Попробуй это:

@foreach(var queryformdata = db.Query("SELECT * FROM document_data WHERE doc_id = @0", 1534)) {
    <input type="text" id="@queryformdata.field_name" name="@queryformdata.field_name" value="@queryformdata.field_data" />
}
person ristonj    schedule 18.06.2013
comment
На самом деле я пытался избежать вызова базы данных для каждого поля ввода. В некоторых формах более 100 полей, и кажется, что должен быть способ назначить данные без отдельного вызова для каждого. Хотя, возможно, я ошибаюсь. Лучший способ просто сделать несколько запросов к БД? - person E Benzle; 19.06.2013
comment
Это должно сделать только один запрос к БД. Он будет перебирать результаты запроса и назначать данные. - person ristonj; 20.06.2013