Linq实现DaTaTable或者List里面数据值不重复

在回答论坛有个某列不重复的值为条件获取数据的问题,而记录下来。

问题:源地址:http://bbs.csdn.net/topics/390887849?page=1#post-398200802

id  proname  brandid  guigecategoryid
1      abc            5              16
2      bbb            5              16
3      adc            7               3
4      aac            9               7


字段 (guigecategoryid)中 值去掉重复值,想得到结果如下
id  proname  brandid  guigecategoryid
1      abc            5              16
3      adc            7               3
4      aac            9               7

注意:得到的是一个结果集,有多列存在,不是仅仅对一列筛选
可以用dataview.totable()
可以用linq to sql
可以用distinct

List为数据源的解决方法

  List<Test> getlst = new List<Test>
			   {
					new Test(){id=1,proname="abc",brandid=5,guigecategoryid=16},
					new Test(){id=2,proname="bbb",brandid=5,guigecategoryid=16},
					new Test(){id=3,proname="adc",brandid=7,guigecategoryid=3},
					new Test(){id=4,proname="aac",brandid=9,guigecategoryid=7},
			   };
			   var result = getlst.GroupBy(x => x.guigecategoryid).Select(x => x.First()).ToList();
 public class Test
     {
          public int id { get; set; }
          public string proname { get; set; }
          public int brandid { get; set; }
          public int guigecategoryid { get; set; }  
     } 
得到

id  proname  brandid  guigecategoryid
1      abc            5              16
3      adc            7               3
4      aac            9                7

DataTable为数据源的解决方法

 DataTable dt = new DataTable();
			   dt.Columns.AddRange(new DataColumn[]{  
		           new DataColumn("id", Type.GetType("System.Int32")),  
		           new DataColumn("proname", Type.GetType("System.String")),  
			   new DataColumn("brandid", Type.GetType("System.Int32")),  
			   new DataColumn("guigecategoryid", 
                           Type.GetType("System.Int32")),  
				  });
			   dt.Rows.Add(1, "abc", 5, 16);
			   dt.Rows.Add(2, "bbb", 5, 16);
			   dt.Rows.Add(3, "adc", 7, 3);
			   dt.Rows.Add(4, "aac", 9, 7);
			   var result1 = dt.AsEnumerable().GroupBy(x => 
x.Field<Int32>("guigecategoryid")).Select(x => x.First()).ToList();

			   var result2 = from p in dt.AsEnumerable().GroupBy(x =>
x.Field<Int32>("guigecategoryid")).Select(xx => xx.FirstOrDefault()).ToList() 
select p;

得到

id  proname  brandid  guigecategoryid

1      abc            5              16
3      adc            7               3
4      aac            9              
7
   

 


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值