C# 如何将LINQ列表更改为arraylist

C# 如何将LINQ列表更改为arraylist,c#,linq-to-sql,sqlite,C#,Linq To Sql,Sqlite,我必须使用LINQ在web应用程序中编写查询,但我需要将该查询更改为数组列表。如何更改下面的查询以执行此操作 var resultsQuery = from result in o["SearchResponse"]["Web"]["Results"].Children() select new { Url = result.Value<string>("Url").ToString(), Title = result.Valu

我必须使用LINQ在web应用程序中编写查询,但我需要将该查询更改为数组列表。如何更改下面的查询以执行此操作

var resultsQuery =
    from result in o["SearchResponse"]["Web"]["Results"].Children()
    select new
    {
        Url = result.Value<string>("Url").ToString(),
        Title = result.Value<string>("Title").ToString(),
        Content = result.Value<string>("Description").ToString()
    };
var resultsQuery=
从o[“SearchResponse”][“Web”][“Results”].Children()中的结果开始
选择新的
{
Url=result.Value(“Url”).ToString(),
Title=result.Value(“Title”).ToString(),
Content=result.Value(“Description”).ToString()
};

如果确实需要创建ArrayList,可以编写
新的ArrayList(resultsQuery.ToArray())

但是,您应该通过编写
resultsQuery.ToList()
来使用
列表

请注意,在这两种情况下,列表都将包含匿名类型的对象。

有一个.ToArray()方法将IEnumerable转换为数组

没有接受
IEnumerable
的构造函数或Add(Range)方法。因此,剩下两种选择:

  • 使用确实实现
    ICollection
    的中间集合:因为
    Array
    List
    实现
    ICollection
    可以通过LINQ的
    ToArray()
    ToList()
    扩展方法使用

  • 创建
    ArrayList
    的实例,然后添加结果的每个元素:

    var query = /* LINQ Expression */
    var res = new ArrayList();
    foreach (var item in query) {
      res.Add(item);
    }
    
前一种方法很简单,但确实意味着创建中间数据结构(两个选项中哪一个开销更大是一个有趣的问题,部分取决于查询,因此没有一般性的答案)。后者是更多的代码,并且确实需要增量地增加
ArrayList
(因此GC需要更多的内存,就像中间
数组
列表
一样)

如果您只需要在一个位置执行此操作,则只需内联执行代码;如果您需要在多个位置执行此操作,请在
IEnumerable
上创建自己的扩展方法:

公共静态类MyExtensions{
公共静态ArrayList到ArrayList(此IEnumerable输入){
var col=输入为ICollection;
如果(列!=null){
返回新的ArrayList(col);
}
var res=新的ArrayList();
foreach(输入中的变量项){
决议增补(项目);
}
返回res;
}
}

不要使用
ArrayList
。您对结果做了什么?是指
ArrayList
还是
List
?前者,在仿制药之前的几天,对于LINQ表达式的结果而言,这将是一种不同寻常的收集选择,与数组相比几乎没有优势。您好,谢谢您给予响应。实际上,我已将数据获取到列表中,列表值存储到arraylist中……很抱歉,没有toarray Intelligence不显示toarry它只显示tostring。您需要包装整个列表使用()进行查询,然后重试。ToArray()您好,感谢您提供的响应我已尝试类似arraylist的arraylist resultsQuery=o[“SearchResponse”][“Web”][“Results”]。Children();但是显示错误
新建ArrayList(resultsQuery.ToArray())
(或
(从…选择….ToArray()
)var o=(Newtonsoft.Json.Linq.JObject)JsonConvert.DeserializeObject(第页);这是我的列表值,我可以从中获取值…到数组中我在上面代码中发布的值。。。。
public static class MyExtensions {
  public static ArrayList ToArrayList<T>(this IEnumerable<T> input) {
    var col = input as ICollection;
    if (col != null) {
      return new ArrayList(col);
    }

    var res = new ArrayList();
    foreach (var item in input) {
      res.Add(item);
    }
    return res;
  }
}