Как получить единственное значение с помощью структуры лица - PullRequest
6 голосов
/ 19 августа 2011

у меня есть

     table product with colums product_id 
                               prodcut_name
                               category_id

                another table  category 
                               category_id
                               category_name

и я заполняю эти детали продукта, используя datagridview, который работает нормально

и мне нужно получить имя категории для выбранной строки в datagridview для этого я сделал так ....

        private void productGridview_Cellclick(object sender, DataGridViewCellEventArgs e)
        {
               string productname = Convert.ToString(selectedRow.Cells["productnam"].Value);
               var categoryids = from cats in abc.products
                                where cats.product_Name.Equals(productname)
                                select cats.category_Id;


            var catogynames = from categorytypes in abc.categories
                              where categorytypes.category_Name.Equals(categoryids)
                              select categorytypes.category_Name;


            string categorynames = catogynames;    

       }                              

получил

  error : cannot implicitly convert type sysytem.linq.iqueryble<string> to string ...

что мне нужно сделать, чтобы получить единственное имя категории для выбранной ячейки в столбце productgridview productnam column

любые предложения .. пожалуйста ..

большое спасибо ....

Модифицированный код: получил ошибку:

not supported exception:

Unable to create a constant value of type 'System.Object'. Only primitive types ('such as Int32, String, and Guid') are supported in this context.

Ответы [ 2 ]

9 голосов
/ 19 августа 2011

Ваш запрос возвращает объект запроса, который ведет себя как коллекция. Вы можете использовать First, FirstOrDefault, Single или SingleOrDefault, чтобы получить первый или единственный элемент из запроса соответственно.

var categoryid = (from cats in abc.products
                  where cats.product_Name.Equals(productname)
                  select cats.category_Id).SingleOrDefault();


string categoryname = (from categorytypes in abc.categories
                       where categorytypes.category_Name.Equals(categoryid)
                       select categorytypes.category_Name).SingleOrDefault();
0 голосов
/ 19 августа 2011

Ваша проблема с кастингом здесь

  string categorynames = catogynames;

catogynames равно IQueryble.Вы можете сделать что-то вроде этого,

List<String> categorynames = catogynames.ToList();

Или вы можете перебрать catogynames.

PS. Пожалуйста, проверьте имена переменных: D.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...