#c# #iqueryable
#c# #iqueryable
Вопрос:
у меня есть следующий класс :
class myClass { string b; string c; string d; }
и следующий список :
IQueryable<myClass> bla = new list<myClass>();
я хочу изменить первый элемент в списке, где MyClass.c = «котенок»;
Для другого экземпляра MyClass давайте назовем его newInstance;
я не хочу выполнять k = bla.first(x => x.c ==»котенок»), а затем копировать одно за другим поля из newInstance в k, я хочу, чтобы список «bla» ссылался на newInstance без изменения k..
как мне этого добиться?
Комментарии:
1.
List<T>
не реализуетсяIQueryable<T>
— не могли бы вы представить короткий, но полный пример, который будет скомпилирован?2. частный статический IQueryable<Продукт> Поддельные продукты = новый список<Продукт> новый продукт { Название = «Футбольный мяч», Цена = 25 }, новый продукт { Название = «Доска для серфинга», Цена = 179 }, новый продукт { Название = «Кроссовки», Цена = 95 } }.AsQueryable();
3. @OopsUser: Хорошо, значит, вы вызываете AsQueryable… есть ли причина для этого? Зачем вообще добавлять IQueryable в микс?
4. потому что многие из моих функций используют интерфейс iqueryable.
5. @OopsUser: Хотя нужно ли им это? Что
IQueryable<T>
дает вам то, чегоIEnumerable<T>
нет? Это может быть уместным, но вполне может и не быть.
Ответ №1:
Для этого вы можете использовать приведенный ниже итератор:
public static IEnumerable<myClass> GetChanged(IEnumerable<myClass> data)
{
bool found = false;
foreach(myClass c in data)
{
if(found == false amp;amp; c.c=="kitten")
{
found = true;
yield return new myClass() ; //new object
}
else
yield return c;
}
}