Linq to datasets - получение определенного значения столбца в C # - PullRequest
0 голосов
/ 10 октября 2010

Я пытаюсь получить описание ошибки в соответствии с идентификатором ошибки:

String errorDesc = from resultCodesTableRow in resultCodesDT.AsEnumerable()
                            where resultCodesTableRow.Field<int>("Error_Code_Column_Name") == errorCode
                            select resultCodesTableRow.Field<string>("Error_Desc_Column_Name").ToString();

, почему я получаю ошибку:

"Не удается неявно преобразовать тип" System.Data.EnumerableRowCollection'to' string '"?

как должен выглядеть запрос?

Ответы [ 3 ]

0 голосов
/ 11 октября 2010

Я не совсем уверен, что реальный запрос LINQ возвращает наиболее вероятно, увидев его, и, как вы сказали, вы получаете ошибку, он может возвращать коллекцию, поэтому, чтобы избежать использования первого или последнего метода для запроса, т.е. *

String errorDesc = из resultCodesTableRow в resultCodesDT.AsEnumerable () где resultCodesTableRow.Field ("Error_Code_Column_Name") == errorCode выберите resultCodesTableRow.Field ("Error_Desc_Column_Name"). First (). ToString ();

0 голосов
/ 11 октября 2010

функция Select в вашем выражении вернет IEnumerable. вместо этого вам нужно использовать что-то вроде

String errorDesc = (from resultCodesTableRow in resultCodesDT.AsEnumerable()
                            where resultCodesTableRow.Field<int>("Error_Code_Column_Name") == errorCode
                            select resultCodesTableRow.Field<string>("Error_Desc_Column_Name").ToString()).First();

или, может быть, это будет работать, но не проверено

 String errorDesc = resultCodesDT.Where(X=> x.Error_Code_Column_Name==errorCode)
.Select(s=>s.Error_Desc_Column_Name.toString()).First();
0 голосов
/ 10 октября 2010

Изменение resultCodesDT.AsEnumerable() до resultCodesDT.rows

Работает ли это:

where (int)resultCodesTableRow.GetItem("Error_Code_Column_Name") == errorCode
select resultCodesTableRow.GetItem("Error_Desc_Column_Name")
...