как изменить элемент в IQueryable?

#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;
    }
}