求教:类似DataTable 的select方法
现在需要写一个方法,接收的参数是DataRow数组(通过datatable的select方法获取的),现要再写一个方法,从DataRow数组中再次进行筛选。因DataRow数组需要经过一定计算,在DataRow中存储数据,因此不能转换为DataTable,希望用类似DataTable的select方法实现,请高手赐教!public static DataRow[] Select(DataRow[] rows, string filter)
//filter格式与select方法的参数类似
{
?
} datatable select() --------------------编程问答-------------------- Linq提供了标准的Where、Select操作,没必要自己写一个。 --------------------编程问答-------------------- linq是挺方便的,为什么要自己去写呢
不是浪费精力吗? --------------------编程问答-------------------- 我写的是基于2.0的,linq还没研究过呢 --------------------编程问答-------------------- 基本上集合都可以使用linq筛选,自己写的话也是根据需求在封装一次而已。 --------------------编程问答--------------------
2.0下载LinqBridge。 --------------------编程问答-------------------- 不想用linq,那你就还是用DataTable吧。新建一个。
虽然笨了点。 --------------------编程问答-------------------- 绕开linq是个费脑子的事= =
--------------------编程问答-------------------- 不用linq,
using System.Collections;
using System.Data;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
}
public static DataRow[] Select(DataRow[] rows, string filter) //filter格式与select方法的参数类似
{
if (rows.Length == 0)
{
return new DataRow[0];
}
var dt = rows[0].Table.Clone();
foreach (var item in rows)
{
dt.Rows.Add(item.ItemArray);
}
return dt.Select(filter);
}
public static DataRow[] Select2(DataRow[] rows, string filter) //再一种实现,先select再过滤
{
if (rows.Length == 0)
{
return new DataRow[0];
}
Hashtable htSource = new Hashtable(rows.Length), htResult = new Hashtable();
foreach (var item in rows)
{
htSource[item] = null;
}
foreach (var item in rows[0].Table.Select(filter))
{
if (htSource.ContainsKey(item))
{
htResult[item] = null;
}
}
var result = new DataRow[htResult.Count];
htResult.CopyTo(result, 0);
return result;
}
}
}
只有把筛选出的数据行,再次装入datatable中,然后在select --------------------编程问答-------------------- 楼主正解,我以前就是这么做的。 --------------------编程问答-------------------- 性能没什么影响的。楼主放心用把
补充:.NET技术 , C#