C# 如何将LINQ列表更改为arraylist
我必须使用LINQ在web应用程序中编写查询,但我需要将该查询更改为数组列表。如何更改下面的查询以执行此操作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
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;
}
}