解决方案 »

  1.   

                DataTable dt = new DataTable();
                dt.PrimaryKey=new DataColumn[]{...}可以伤害PrimaryKey,利用这一特性配合try{}cache(){}进行处理
      

  2.   

    dt先转一下可以执行拉姆达表达式兼容对象  然后这种事情分分钟where解决
      

  3.   

    对于一个model的list  model是转换产生的匿名对象 其对象成员是id 和 name两个设转换好后的list名字就是list
    然后在list基础上
    list.Where(a=>a.id&&a.name....)这年头不会拉姆达表达式可不行哦当然可选的还有简单的去做双重循环dt本身也有很多老古方法可以用 不过比对起来不如linq时代后的东西那么简单
      

  4.   

    dt的基础结构实在太多太繁杂
    三层很早就开始转dt为list做所有操作就是因为List<Model对象>比同样结构的dt要容易处理的多
      

  5.   

    绑定DataTable遍历取值示例
     double interest;
        double total;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            { 
                DataTable dt = new DataTable();//创建TataTable对象
                DataRow dr;
                //创建TataTable中的DataColumn列,即构造DataTable对象的骨架
                dt.Columns.Add(new DataColumn("月份", typeof(int)));
                dt.Columns.Add(new DataColumn("现存款数", typeof(float)));
                dt.Columns.Add(new DataColumn("利息", typeof(float)));
                dt.Columns.Add(new DataColumn("本息和", typeof(float)));
                for (int i = 0; i <= 11; i++)
                {
                    if (!(i > 0))
                    {
                        interest = 0;
                        total = 500;
                    }
                    else
                    {
                        interest=(total * 0.05);
                        total = (500 + interest + total);
                    }
                    dr = dt.NewRow();
                    dr[0] = i + 1;
                    dr[1] = 500;
                    dr[2] = interest;
                    dr[3] = total;
                    dt.Rows.Add(dr);
                }//codego.net/11/1/1/
                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
        }
      

  6.   

    dt按照new {id,name}分组下不就好了吗?
      

  7.   


    大哥 麻烦你where 出来我看看,我要是会了我就写出来了。
      

  8.   


    听起来好像挺简单,问题的提问你还没看清楚呀, 如果id 有3条, 如果其中name 不等则这三条都 不需要,,麻烦你where出来我看看, 谢谢
      

  9.   

    实在不懂lambda表达式或linq的话
    直接写个双重for循环遍历判断一下不就得了1.外循环,按行循环,for(int row=0;row<count;row++)
    2.内循环,for(int i=0;i<row;i++)
    3.最内层判断,if(dt.rows[row][0].ToString()==dt.rows[i][0].ToString() && dt.rows[row][1].ToString()==dt.rows[i][1].ToString())
    4.最好加入字典,否则你还要判断新表里是否加入了重复数据给你写个伪代码,你自己应该就会转换成代码了.如果你连for循环也不会写,还是放弃编程吧
      

  10.   


                DataTable dt = new DataTable();
                dt.Columns.Add("1");
                dt.Columns.Add("2");            string[] c1 = new string[] { "1", "1", "2", "3", "3", "3", "4", "4", "5", "5", "5", "5", };
                string[] c2 = new string[] { "ss", "ss", "rr", "dd", "dd", "cc", "tt", "tt", "gg", "gg", "gg", "gg", };
                
                for (int i = 0; i < 12; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr[0] = c1[i];
                    dr[1] = c2[i];
                    dt.Rows.Add(dr);
                }            Dictionary<string, string> d = new Dictionary<string, string>();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    for (int j = 0; j < i; j++)
                    {
                        if (dt.Rows[i][0].ToString() == dt.Rows[j][0].ToString() && dt.Rows[i][1].ToString() == dt.Rows[j][1].ToString())
                        {
                            d[dt.Rows[i][0].ToString()] = dt.Rows[i][1].ToString();
                        }
                    }
                }
      

  11.   

    d[dt.Rows[i][0].ToString()] = dt.Rows[i][1].ToString();
    break;
    这样更好一点
    找到一样的了就可以结束循环,不需要再往下继续找了
      

  12.   

    存放到一个类里,使用list集合存放,使用linq 的Distinct 属性 很容易都搞定了。用不了 什么for循环
      

  13.   

    List<TestModel> list = new List<TestModel>();
                list.Add(new TestModel(1, "ss"));
                list.Add(new TestModel(1, "ss"));
                list.Add(new TestModel(2, "rr"));
                list.Add(new TestModel(3, "dd"));
                list.Add(new TestModel(3, "dd"));
                list.Add(new TestModel(3, "cc"));
                list.Add(new TestModel(4, "tt"));
                list.Add(new TestModel(4, "tt"));
                list.Add(new TestModel(5, "gg"));
                list.Add(new TestModel(5, "gg"));
                list.Add(new TestModel(5, "gg"));
                list.Add(new TestModel(5, "gg"));
                var result = from data in list
                             group data by new { data.ID, data.Name } into g
                             select new { ID = g.Key.ID, Name = g.Key.Name, Count = g.Count() };
                var finalResult = result.GroupBy(p => p.ID).Select(g => g.OrderByDescending(c => c.Count).First());
                foreach (var model in finalResult)
                {
                    Console.WriteLine(string.Format("{0}-{1}-{2}", model.ID.ToString(), model.Name, model.Count.ToString()));
                }
      

  14.   

    DataTable dt = new DataTable();
                dt.Columns.Add("序号",typeof(int));
                dt.Columns.Add("名称", typeof(string));            dt.Rows.Add(1, "ss");
                dt.Rows.Add(1, "ss");
                dt.Rows.Add(2, "rr");
                dt.Rows.Add(3, "dd");
                dt.Rows.Add(3, "dd");
                dt.Rows.Add(3, "cc");
                dt.Rows.Add(4, "tt");
                dt.Rows.Add(4, "tt");
                dt.Rows.Add(5, "gg");
                dt.Rows.Add(5, "gg");
                dt.Rows.Add(5, "gg");
                dt.Rows.Add(5, "gg");            List<Sample> list = new List<Sample>();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Sample model = new Sample();
                    model.Number = Convert.ToInt32(dt.Rows[i][0]);
                    model.Name = dt.Rows[i][1].ToString();
                    list.Add(model);
                }
                var obj = list.Select(a => new { a.Number, a.Name }).Distinct().ToList();
      

  15.   

     可以直接对dt进行linq查询的
      

  16.   

    感谢提醒,看Tim哥的博客学习了一下
    DataTable table = new DataTable();
                table.Columns.Add("ID", typeof(int));
                table.Columns.Add("Name", typeof(string));
                table.Rows.Add(new object[] { 1, "ss" });
                table.Rows.Add(new object[] { 1, "ss" });
                table.Rows.Add(new object[] { 2, "rr" });
                table.Rows.Add(new object[] { 3, "dd" });
                table.Rows.Add(new object[] { 3, "dd" });
                table.Rows.Add(new object[] { 3, "cc" });
                table.Rows.Add(new object[] { 4, "tt" });
                table.Rows.Add(new object[] { 4, "tt" });
                table.Rows.Add(new object[] { 5, "gg" });
                table.Rows.Add(new object[] { 5, "gg" });
                table.Rows.Add(new object[] { 5, "gg" });
                table.Rows.Add(new object[] { 5, "gg" });
                var result = from t in table.AsEnumerable()
                             group t by new { ID = t.Field<int>("ID"), Name = t.Field<string>("Name") } into g
                             select new { ID = g.Key.ID, Name = g.Key.Name, Count = g.Count() };
                var finalResult = result.GroupBy(p => p.ID).Select(g => g.OrderByDescending(c => c.Count).First());
                finalResult.ToList().ForEach(r => Console.WriteLine(string.Format("{0}-{1}-{2}", r.ID, r.Name, r.Count)));
      

  17.   

    Tim哥
      

  18.   


    /*利用DataTable的Select方法和分组*/DataRow[] selectedRows = dataTable.Select("Select Max(id), Max(name) From TableName Group By id, name");这样应该就可以了