C# - последовательность не содержит элементов (скрин)

  • Автор темы Автор темы nail2501
  • Дата начала Дата начала

nail2501

Client
Регистрация
19.04.2015
Сообщения
522
Реакции
50
Баллы
28
Есть список tags_list
Пытаюсь определить наличие в списке строки, состоящей из переменных: tag + "~~~" + attrname + "~~~" + attrvalue)

C#:
Развернуть Свернуть Копировать
tag = he.GetAttribute("fulltagname");
attrname = "id";
attrvalue = he.GetAttribute("id");
temp_s = tags_list.Where(x => x.Contains(tag + "~~~" + attrname + "~~~" + attrvalue)).First(); //проверка наличия строки в TAGS
return temp_s;

Выдает вот это (скрин)
Нужна помощь ... )
Возможно что проблема в этом участке?
Если да то как это обойти?

Получается что если нет совпадений то данная конструкция выдает ошибку?
Как ее правильно написать?
 

Вложения

  • скрин4234.png
    скрин4234.png
    102,1 KB · Просмотры: 169
Последнее редактирование:
1) if (!he.IsVoid)

2) FirstOrDefault
3) Материализовать коллекцию, сосчитать количество результатов, получить первый - иначе пусто :-)

C#:
Развернуть Свернуть Копировать
tag = he.GetAttribute("fulltagname");
attrname = "id";
attrvalue = he.GetAttribute("id");
temp_s = tags_list.Where(x => x.Contains(tag + "~~~" + attrname + "~~~" + attrvalue)).First(); //проверка наличия строки в TAGS
return temp_s;
Может так сработает?
C#:
Развернуть Свернуть Копировать
tag = he.GetAttribute("fulltagname");
attrname = "id";
attrvalue = he.GetAttribute("id");
var list = tags_list.Where(x => x.Contains(string.Join("~~~", new[]{tag,attrname,attrvalue})).ToList(); //проверка наличия строки в TAGS
temp_s = list.Count > 0 ? list[0] : string.Empty;
return temp_s;
 
  • Оценить
Реакции: ZX и nail2501
3) Материализовать коллекцию, сосчитать количество результатов, получить первый - иначе пусто :-)


Может так сработает?
C#:
Развернуть Свернуть Копировать
tag = he.GetAttribute("fulltagname");
attrname = "id";
attrvalue = he.GetAttribute("id");
var list = tags_list.Where(x => x.Contains(string.Join("~~~", new[]{tag,attrname,attrvalue})).ToList(); //проверка наличия строки в TAGS
temp_s = list.Count > 0 ? list[0] : string.Empty;
return temp_s;
temp_s = temp_list.Where(x => x.Contains("бла-бла-бла")).FirstOrDefault();
привет.
а как удалить данную строку из списка, которую я нашел таким способом?
номер строки то я не знаю чтобы использовать например ... RemoveAt(i);
спасибо.
 
temp_s = temp_list.Where(x => x.Contains("бла-бла-бла")).FirstOrDefault();
привет.
а как удалить данную строку из списка, которую я нашел таким способом?
номер строки то я не знаю чтобы использовать например ... RemoveAt(i);
спасибо.
Правильно, если Вы нашли строку таким образом, то Вы не можете удалить её по индексу.
Прежде нужно найти индекс, а потом уже удалить.
Пример:
C#:
Развернуть Свернуть Копировать
List<string> temp_list = new List<string>();
temp_list.Add("бла-бла-бла");
temp_list.Add("бла-бла-бла");

string temp_s = temp_list.Where(x => x.Contains("бла-бла-бла")).FirstOrDefault();
int num = -1;
for(int i=0;i<temp_list.Count;i++) {
    if(temp_list[i] == temp_s) {
        num = i;
        break;
    }
}

if(num >= 0) {
    temp_list.RemoveAt(num);
}
Но, могут быть разные тонкости Default если строки нет будет string.Empty - а значит, возможно стоит проверять, если строка temp_s пустая - тогда ничего удалять не нужно...
 
Правильно, если Вы нашли строку таким образом, то Вы не можете удалить её по индексу.
Прежде нужно найти индекс, а потом уже удалить.
Пример:
C#:
Развернуть Свернуть Копировать
List<string> temp_list = new List<string>();
temp_list.Add("бла-бла-бла");
temp_list.Add("бла-бла-бла");

string temp_s = temp_list.Where(x => x.Contains("бла-бла-бла")).FirstOrDefault();
int num = -1;
for(int i=0;i<temp_list.Count;i++) {
    if(temp_list[i] == temp_s) {
        num = i;
        break;
    }
}

if(num >= 0) {
    temp_list.RemoveAt(num);
}
Но, могут быть разные тонкости Default если строки нет будет string.Empty - а значит, возможно стоит проверять, если строка temp_s пустая - тогда ничего удалять не нужно...
ну я думал может есть удаление не только по индексу.
спасибо.
может как то можно пристроить ф-цию удаления к той конструкции )
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)