【问题标题】:how to change an item in IQueryable<T>?如何更改 IQueryable<T> 中的项目?
【发布时间】:2011-05-09 08:47:18
【问题描述】:

我有以下课程:

class myClass { string b; string c; string d; }

以及以下列表:

IQueryable<myClass> bla = new list<myClass>();

我想更改列表中的第一项,其中 myClass.c = "kitten";

对于 myClass 的另一个实例,我们称他为 newInstance;

我不想做 k = bla.first(x => x.c =="kitten") 然后将newInstance中的字段一一复制到k,我希望“bla”列表引用newInstance,而不更改k..

我如何实现它?

【问题讨论】:

  • List&lt;T&gt; 没有实现 IQueryable&lt;T&gt; - 你能提供一个简短但完整的例子吗?
  • private static IQueryable fakeProducts = new List new Product { Name = "Football", Price = 25 }, new Product { Name = "Surf board", Price = 179 }, new Product { Name = "跑鞋", Price = 95 } }.AsQueryable();
  • @OopsUser:好的,所以你调用 AsQueryable... 有什么理由这样做吗?为什么要将 IQueryable 加入其中?
  • 因为我的很多函数都使用了 iqueryable 接口。
  • @OopsUser:他们需要吗? IQueryable&lt;T&gt; 给了你什么 IEnumerable&lt;T&gt; 没有?它可能合适,但很可能不合适。

标签: c# iqueryable


【解决方案1】:

你可以使用下面的迭代器来做到这一点:

public static IEnumerable<myClass> GetChanged(IEnumerable<myClass> data)
{
    bool found = false;
    foreach(myClass c in data)
    {
       if(found == false && c.c=="kitten")
       {
           found = true;
           yield return new myClass() ; //new object
       }
       else
           yield return c;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2014-07-11
    • 2023-03-05
    • 2013-09-03
    • 2011-01-15
    相关资源
    最近更新 更多