2016-07-11 4 views
1

im new to linq. и у меня возникает проблема с извлечением значения каждого столбца из одной строки ... там мой код.как получить значение строки для каждого столбца из linq

var websitedetail = (from x in dt.AsEnumerable() 
        where x["CYBER_TY"].ToString() == "WEBSITE" 
        select x).FirstOrDefault(); 

     var test2 = websitedetail.Field<int>("CYBER_SERNO"); 

дт является DataTable с источником из sp.this базы данных дает мне указанный бросок не является действительным. Я попытался Convert.ToInt32

спасибо

объектов
+0

Это не имеет ничего общего с LINQ. Ваша переменная 'websitedetail' имеет тип' DataRow', и доступ к полям строк совпадает с LINQ или без него. Вы можете начать с просмотра типа значения, возвращаемого 'websitedetail [" CYBER_SERNO "]'. Также свойства 'dt.Columns' и' websitedetail.ItemArray'. –

+0

спасибо Ивану. Причина, по которой я использую linq, - это .. я не контролирую SP от нашего поставщика. И мне нужно отфильтровать возвращаемые данные. и повторно использовать значения из этих столбцов. –

ответ

0
var websitedetail = (from x in dt.AsEnumerable() 
        where x["CYBER_TY"].ToString() == "WEBSITE" 
        select x).FirstOrDefault(); 


var test2 = websitedetail.CYBER_SERNO 

Linq сильно набраны; Это означает, что ваши свойства на ваших объектах являются столбцами в вашей строке. Например

Database Table FOO: 
ID 
Name 
Description 

Turnes в

FOO.FirstOrDefault().ID 

или

FOO.FirstOrDefault().Description 
0
var websitedetail = (from x in dt.AsEnumerable() 
        where x["CYBER_TY"].ToString() == "WEBSITE" 
        select x).select(y=>y.ID).FirstOrDefault(); 
+0

Просьба предоставить немного больше информации, касающейся исправления, чтобы объяснить, как это работает ... – Dave