Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Linq List.Contains 
:(
    Опции темы
CYBERDREAM
Дата 25.8.2010, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: нет
Всего: 28



Всем доброго времени суток. 
Есть коллеция айдишников 
Код

List<Int32> uids;
//и табличка
Nsb


мне нужно вывести все записи, в которых поле UID содержится в коллекции uids
Код

var dddd = (from lt in _dbPduu.NsbDictionaryStructures where uids.Contains(lt.UID) select lt).DefaultIfEmpty();
//но при выполнении запроса выдает - NullReferenceException, что не так делаю? нельзя проверять на вхождение в коллекцию что ли?
foreach (var item in dddd)//вот здесь)
     Console.WriteLine(item.Name);





--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
KelTron
Дата 26.8.2010, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 2
Всего: 38



Очевидно возвращается пустая коллекция, т.е. нет таких записей, а т.к. DefaultIfEmpty() то возвращается значение по умолчанию для данного типа т.е. null. Соответственно в foreach при вызове ddd.GetEnumerator() всё и валится..


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
CYBERDREAM
Дата 26.8.2010, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: нет
Всего: 28



но дело в том, что данные должны быть, т.е. 2 записи у меня точно должны вернуться, но упорно возвращается нулл


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
mrbrooks
Дата 26.8.2010, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



CYBERDREAM, попробуй использовать пересечение:
Цитата(CYBERDREAM @  26.8.2010,  11:40 Найти цитируемый пост)
но дело в том, что данные должны быть, т.е. 2 записи у меня точно должны вернуться, но упорно возвращается нулл


тем не менее не возвращает камрад. 
DefaultIfEmpty() по определению будет возвращать null в случае пустой результирующей коллекции. задай ему значение по умолчанию. или перед выводом коллекции делай проверку на null.  хотя и обработать исключение дело конечно не грешное.
В общем оцени данные в используемых коллекциях. Судя по результату у них нет общих точек соприкосновения.

PM MAIL   Вверх
CYBERDREAM
Дата 26.8.2010, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: нет
Всего: 28



вот и я гадаю почему,точно знаю что две записи должны вернуться, но увы и ах) 
повожусь с кодом еще, полюбому какая то фигня зарылась


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
Сарт
Дата 9.9.2010, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



Код

    class IntClass
    {
        public int UID
        { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<int> testList = new List<int>() { 1, 1, 2, 3, 5 };
            List<IntClass> tipoTable = new List<IntClass>()
            { new IntClass() { UID=1},
                new IntClass() { UID=2},
            };
            List<int> result = (from res in tipoTable join
                                                 tl in testList  
                                                 on res.UID equals tl
                                                 select res.UID).ToList();

        
        }


Так не подойдет? Возвращает 3 записи.

П.С. 
сразу не заметил, что в вопросе фактически 2 массива)

Это сообщение отредактировал(а) Сарт - 9.9.2010, 13:47
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LINQ (Language-Integrated Query) | Следующая тема »


 




[ Время генерации скрипта: 0.0876 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.