locked
Запрос Linq to SQl RRS feed

  • Вопрос

  • в продолжении темы там был такой запрос.

    List<Tuple<int, string>> list = new List<Tuple<int, string>>();
    
                    var ntName = mc.Tenders.Select(c => c.NameTenders).ToList();
                    var ntID = mc.Tenders.Select(c => c.IdTenders).ToList();
    
                    for (int i = 1; i <= mc.Tenders.Count(); i++)
                    {
                        list.Add(new Tuple<int, string>(Convert.ToInt32(ntID[i]), ntName[i].ToString()));
                    }
                    return list;

    всё хорошо

    Но если мне вдркг понадобилось отсортировать

                    var ntm = from c in mc.Tenders
                              where c.ValidateTenders == 1
                              select c.NameTenders;
                    var ntName = ntm.ToList();

    то ничего нет если в поле ValidateTenders  есть 1 и 0

    высвечиваются данные только если все 1. :)


    Спасибо

    9 января 2013 г. 22:11

Ответы

  • Спасибо за адаптацию кода, но вопрос был в другом.

    Именно, если в поле ValidateTenders стоят во всех строчках 1 то все строчки и выводятся

    Но если будет например стоять несколько 0 или вообще других цифр, то ничего вообще не выводится, даже те строчки, которые стоят с 1


    Спасибо

    Может быть в этом проблема. В выражении запроса предложение select задает тип значений, получаемых при выполнении запроса. Результат основывается на анализе всех предыдущих предложений и на любых выражениях внутри предложения select.  Я не знаю какие типы свойств/полей Вы используете.

    • Помечено в качестве ответа developers_s 10 января 2013 г. 18:53
    10 января 2013 г. 18:49

Все ответы

  • по первому куску кода.

    Непонятно зачем Вы из одной коллекции делаете еще две (итого получается 3)

    почему бы не сделать, например, так

    List<Tuple<int, string>> list = new List<Tuple<int, string>>();
    
    foreach (var item in mc.Tenders)
    {
       list.Add(new Tuple<int, string> ((Convert.ToInt32(item.IdTenders), item.NameTenders));
     }
     return list;
    по второму. Все правильно выводит. Просили where c.ValidateTenders == 1? Вы однозначно указали диапазон значений в выборке, так что получите и распишитесь. Поиграйтесь с условием выборки, в msdn хорошая документация по where. А там в зависимости от типа данных свойства (поля) класса "с"...

    10 января 2013 г. 12:15
  • Спасибо за адаптацию кода, но вопрос был в другом.

    Именно, если в поле ValidateTenders стоят во всех строчках 1 то все строчки и выводятся

    Но если будет например стоять несколько 0 или вообще других цифр, то ничего вообще не выводится, даже те строчки, которые стоят с 1


    Спасибо

    10 января 2013 г. 16:58
  • Спасибо за адаптацию кода, но вопрос был в другом.

    Именно, если в поле ValidateTenders стоят во всех строчках 1 то все строчки и выводятся

    Но если будет например стоять несколько 0 или вообще других цифр, то ничего вообще не выводится, даже те строчки, которые стоят с 1


    Спасибо

    Может быть в этом проблема. В выражении запроса предложение select задает тип значений, получаемых при выполнении запроса. Результат основывается на анализе всех предыдущих предложений и на любых выражениях внутри предложения select.  Я не знаю какие типы свойств/полей Вы используете.

    • Помечено в качестве ответа developers_s 10 января 2013 г. 18:53
    10 января 2013 г. 18:49