2 audiohifi audiohifi 于 2016.03.12 23:22 提问

请求caozhy回答一下,如果是datatable该如何处理
x

using System;
using System.Collections.Generic;
using System.Linq;

public class Test
{
public static void Main()
{
string data = @"aaa bb 10 cc 11 dd 12 ee 13
aaa cc 9 dd 4 bb 2 ee 13
aaa cc 16 bb 9 dd 8 ee 13
bbb a1 6 a2 9 a3 8
bbb a2 7 a3 4 a1 6";
string result = string.Join("\r\n", data.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.Split(' ')).SelectMany(x => Enumerable.Range(0, x.Count() / 2).Select(y => new { a = x[0], b = x[y * 2 + 1], c = int.Parse(x[y * 2 + 2]) }))
.GroupBy(x => x.a)
.Select(x => new { a = x.Key + " " + x.Count() + "次", b = x.GroupBy(y => y.b).Select(y => new { b = y.Key, c = y.Sum(z => z.c) }) })
.Select(x => x.a + " " + string.Join(" ", x.b.Select(y => y.b + " " + y.c.ToString()))));
Console.WriteLine(result);
}
}

感谢caozhy大师的回答,如果是datatable该如何处理,本人超级菜,多谢了,如果统计aaa bbb的次数,又该如何写了

13个回答

caozhy
caozhy   Ds   Rxr 2016.03.14 23:10
已采纳

图片说明

caozhy
caozhy   Ds   Rxr 2016.03.12 23:57

我在飞机场没法详细回答你的问题。大概来说,把最后一个select去掉。

加入如下代码
DataTable dt = new DataTable();
dt.Columns.Add("第一列") ;
dt.Columns.Add("第二列");
foreach (var item in result)
{
dt.Rows.NewRow(new string[] { item.a, item.b.ToArray()[0]}, item.b.ToArray()[1], ... );
}

caozhy
caozhy   Ds   Rxr 2016.03.14 23:09

新建一个winforms窗体,双击,在form_load编写:

             string data = @"aaa bb 10 cc 11 dd 12 ee 13
aaa cc 9 dd 4 bb 2 ee 13
aaa cc 16 bb 9 dd 8 ee 13
bbb a1 6 a2 9 a3 8
bbb a2 7 a3 4 a1 6";
            var result = data.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries)
                .Select(x => x.Split(' ')).SelectMany(x => Enumerable.Range(0, x.Count() / 2).Select(y => new { a = x[0], b = x[y * 2 + 1], c = int.Parse(x[y * 2 + 2]) }))
                .GroupBy(x => x.a)
                .Select(x => new { a = x.Key + " " + x.Count() + "次", b = x.GroupBy(y => y.b).Select(y => new { b = y.Key, c = y.Sum(z => z.c) }) });
            DataTable dt = new DataTable();
            for (int i = 0; i < 10; i++)
                dt.Columns.Add(((char)(65 + i)).ToString());
            foreach (var item in result)
            {
                var row = dt.NewRow();
                row[0] = item.a;
                int j = 1;
                foreach (var item1 in item.b)
                {
                    row[j++] = item1.b;
                    row[j++] = item1.c;
                }
                dt.Rows.Add(row);
            }
            DataGridView dgv = new DataGridView();
            this.Controls.Add(dgv);
            dgv.Dock = DockStyle.Fill;
            dgv.DataSource = dt;
audiohifi
audiohifi   2016.03.13 00:01

多谢老师
我的意思是:aaa bb 10 cc 11 dd 12 ee 13
aaa cc 9 dd 4 bb 2 ee 13
aaa cc 16 bb 9 dd 8 ee 13
bbb a1 6 a2 9 a3 8
bbb a2 7 a3 4 a1 6"是个datatable 不知道该如何处理,祝老师旅途愉快

audiohifi
audiohifi   2016.03.14 00:33

caozhy老师 如果数据源是个datatable,是否需要转换为数组,分组排序统计以后生成datatable呢?实在不好意思,希望老师在百忙之中帮我解答一下。谢谢老师,反复的问,惭愧,多谢了

audiohifi
audiohifi   2016.03.14 22:45

caozhy老师 ,在么?在线等,呵呵

caozhy
caozhy 在的,刚看到,稍等
2 年多之前 回复
audiohifi
audiohifi   2016.03.14 22:51

先谢了哈 您帮我看看aaa bb 10 cc 11 dd 12 ee 13
aaa cc 9 dd 4 bb 2 ee 13
aaa cc 16 bb 9 dd 8 ee 13
bbb a1 6 a2 9 a3 8
bbb a2 7 a3 4 a1 6"数据源是个datatable 不知道该如何处理

audiohifi
audiohifi   2016.03.14 23:00

是个横向排列的,挺怪的,估计只有老师这样的大师才能帮我解答了 是否要将datatable 转数组呢,呵呵不好意思哈

caozhy
caozhy   Ds   Rxr 2016.03.14 23:15
 你的数据源的datatable表结构是怎么样的。
大概你可以这么写
string data = "";
foreach (var row in datatable.Rows)
{
    data += string.Join(" ", row.ItemArray) + "\r\n";
}
var result = ...
audiohifi
audiohifi   2016.03.14 23:18

谢了,大师,非常热心的一个人,赞一个,还个问题讨教,如果数据源是个datatable 是转换一下呢还是怎么写?

共13条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
当面试官问:‘’谈一下你面向对象的理解‘’时,你该如何回答~~~
回答面试一定要有深度,让面试的大哥感觉你的水平有层次感面向对象编程,即OOP,是一种编程范式,满足面向对象编程的语言,一般会提供类、封装、继承等语法和概念来辅助我们来进行面向对象编程。类型被设计为将数据和行为捆绑在一起的东西,数据和行为被称为类型的成员。我们可以创建类型的实例,不同的实例包含不同的数据,从而其表现出来的行为也会不同,尽管其代码是一样的。封装使得其类的成员得以有选择性的暴露,一些成员...
DataTable 服务器处理分页接收数据
什么是服务器模式? 是不是发现在处理太多 DOM 数据或者 AJAX 一次性把数据获得后,DataTables 表现的不是很满意?这是肯定的, 因为 DT 需要渲染,创建 tr/td ,所以数据越多,速度就越慢。 为了解决这个问题 DataTables ...
datatable 请求时,添加额外数据,获取到返回数据后对数据做处理
1.请求服务端时添加数据,ajax 的data选项,其中request就是发向后端的数据。2.得到返回数据后对数据做处理,fnDrawCallback选项$('#myTable').DataTable({ serverSide: true, processing: true, lengthMenu: [5
PHPdatatable服务器端处理(2)
datatable服务器端处理的代码
Juery DataTable加载后台数据
1.先从DataTable官网下载所需的js文件,或者直接引用也可--http://datatables.net/usage/ 2.放入你的项目中引用 <%@ Page Title="主页" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.c
PHPdatatable服务器端处理(1)
datatable服务器端处理小解
JQuery Datatable Ajax请求两次问题的解决
最近一个项目中使用JQuery Datatable,用起来比较方便,但在测试过程中,发现当条件改变时,有时查询结果中的数据不正确。 使用FireBug跟踪时,发现在使用Ajax请求时,点击一次搜索按钮,却发送了两次请求,一次是原条件的请求,一次是新的请求。 下面是查询按钮的代码。先判断是否是Datatable,如果是的话,先Destroy掉,再重新创建。 function search(
面试时问aop是什么该怎么回答
只说aop是面向切面编程只是个很基础的概念,看过点教程的初学者都知道所以必须得深化点,你得告诉他,aop实现原理其实是java动态代理,但是jdk的动态代理必须实现接口,所以spring的aop是用cglib这个库实现的,cglib使用了asm这个直接操纵字节码的框架,所以可以做到不实现接口的情况下完成动态代理。
datatables——数据的服务器端处理
官网:http://www.datatables.net/ 中文网:http://dt.thxopen.com/ 问题:在处理太多dom数据或者ajax一次性把数据获得后,datatables表现不是很满意。原因使一次性获得数据后,浏览器需要渲染数据,创建tr,所以数据越多,速度就越慢。为了解决这个问题,datatables提供了服务器模式,把本来客户端所做的事情交给服务器
struts,ajax,json
struts2 框架如何处理用户请求 框架如何处理用户请求 框架如何处理用户请求 框架如何处理用户请求 struts2 struts2struts2 struts2 的 ActionAction ActionAction 如何实现和 如何实现和 如何实现和 servletAPI servletAPIservletAPIservletAPIservletAPI servletAPIservletAPIservletAPI的交互