一、背景
有的时候遇到需要合并相同编码的某一项的值,也有些时候需要统计人员来进行某些事务操作。当然这个可以通过SQL语句解决,但不是每家的SQL服务器都是十分厉害的,遇到数据多,访问量多的情况,原本可以很快出结果的也会有可能卡在等待页面上,迟迟不见结果。
二、操作
他的操作与SQL十分类似,这与c#的一个特性有关,那就是LINQ(Language Integrated Query,语言集成查询),是c#3的核心。通过LINQ可以帮我们简化大量的代码,对于想要写出简洁干净有效的代码的人而言,这就是一件神器。这里面我正常使用的有排序、过滤、分组等操作,有兴趣的可以查找更多有关LINQ的资料,肯定会让你喜欢用它。
SQL中分组是根据某列来进行的,这里也是如此,通过某一关键列将之划分为不同的行即DataRow格式。相关代码如下所示:
IEnumerable<IGrouping<string, DataRow>> result = statusTable.Rows.Cast<DataRow>().GroupBy<DataRow, string>(dr => dr["列名"].ToString());
foreach (IGrouping<string, DataRow> res in result)
{
foreach (DataRow item in res){
// 具体操作
}
}
三、结语
这边提供的代码是十分简洁的,但是没有这个特性那么我们第二个比较简洁的就是从数据库中编写相关SQL语句来实现类似的效果,但是有些时候为了确保安全,只是提供一个api共我们调用,无法使用SQL语句,那么我们就需要编写代码先将相关列的划分到一组中,这样就不是一句话就可以搞定的。不过LINQ还是值得去看的。