首页 新闻 会员 周边 捐助

linq去重??

0
悬赏园豆:5 [已解决问题] 解决于 2016-06-04 22:55

 ID                                  CropCode CropName CropStageCode CropStageName
032f27f3-142b-491a-88b6-6527a001dda8 01 水稻 03 有穗分化期
032f27f3-142b-491a-88b6-6527a0025da8 01 水稻 05 灌浆成熟期
032f27f3-142b-491a-88b6-6527a002dda8 01 水稻 04 抽穗扬花期
032f27f3-142b-491a-88b6-6537a001bda8 01 水稻 01 苗期
032f27f3-142b-491a-88b6-6537a001dda8 01 水稻 02 分蘖期
87bfebde-9f44-4b1e-ae94-b651cf5a8888 03 大豆 06 成熟期
87bfebde-9f44-4b1e-ae94-b651cf5ab583 03 大豆 03 分枝期
87bfebde-9f44-4b1e-ae94-b651cf5ab883 03 大豆 04 开花期
87bfebde-9f44-4b1e-ae94-b651cf5ab888 03 大豆 05 结荚鼓粒期
87bfebde-9f44-4b1e-ae94-b651cf5aba83 03 大豆 02 幼苗期
87bfebde-9f44-4b1e-ae94-ba51cf5aba83 03 大豆 01 种子萌发期
12f5780d-180d-4597-bcc4-e6b95ba43b3a 03 玉米 06 成熟
72f5780d-180d-4597-bcc4-e6b95ba43b3a 02 玉米 05 吐丝
79f5780d-180d-4597-bcc4-e6b95ba43b3a 02 玉米 04 开花
79f5780d-180d-4597-bcc4-e6b95ba4ab3a 02 玉米 03 抽雄
79f5780d-180d-4597-bcc4-e6b95bc4ab3a 02 玉米 02 拔节
79f5780d-180d-4597-bcc4-e6b95bc4db3a 02 玉米 01 出苗如上面所示,我查询出来了整个数据,
 var result = cropBll.GetModelList(qB);放在集合result 中,我想把重复的项去掉,并且把这个集合绑定到dropdownlist,
 ddlGrow.DataSource = result ;
        ddlGrow.DataTextField = "CropName";
        ddlGrow.DataValueField = "CropCode";,
linq怎么写

lctk的主页 lctk | 初学一级 | 园豆:69
提问于:2015-07-23 10:48
< >
分享
最佳答案
0

Linq的Distinct就可以,不过需要自定义比较规则。

收获园豆:1
幻天芒 | 高人七级 |园豆:37207 | 2015-07-23 10:59

    var re = (from v in result select v.CropName).Distinct().ToList();
        ddlGrow.DataSource = re;
        ddlGrow.DataTextField = "CropName";
        ddlGrow.DataValueField = "CropCode";
        ddlGrow.DataBind();

现在提示

DataBinding:“System.String”不包含名为“CropName”的属性。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: DataBinding:“System.String”不包含名为“CropName”的属性。

源错误:

行 229: ddlGrow.DataTextField = "CropName"; 行 230: ddlGrow.DataValueField = "CropCode"; 行 231: ddlGrow.DataBind(); 行 232: 行 233: BindDropDownList(ddlQualityProgram, "QualityProgram");

 具体怎么写?

lctk | 园豆:69 (初学一级) | 2015-07-23 11:01

@lctk: 这样肯定不对。。参考:http://www.cnblogs.com/tianfan/archive/2010/03/06/how-to-use-linq-methods-to-compare-objects-of-custom-types.html,很详细。

幻天芒 | 园豆:37207 (高人七级) | 2015-07-23 11:14
其他回答(2)
0

用linq的Distinct()方法,跟sql语句中distinct关键字一样的效果。

收获园豆:2
jacky_liu | 园豆:169 (初学一级) | 2015-07-23 11:04
0

楼主可以参考一下代码

//最后保存到DataTable
            DataTable result = new DataTable();
            result.Columns.Add("id");
            result.Columns.Add("name");
            result.Columns.Add("text");
            result.Columns.Add("date");
 
            var query = from t in dtOutPatient.AsEnumerable()
                        group t by new
                        {
                            t1 = t.Field<string>("name"),
                            t2 = t.Field<string>("text"),
                            t3 = t.Field<string>("date")
                        }
                            into m
                            select new
                            {
                                sname = m.Key.t1,
                                stext = m.Key.t2,
                                date = m.Key.t3,
                                id = m.First().Field<string>("id")
                            };
           
            foreach (var ab in query.ToList())
            {
                DataRow dr = result.NewRow();
                dr["id"] = ab.id;
                dr["name"] = ab.sname;
                dr["text"] = ab.stext;
                dr["date"] = ab.date;
                result.Rows.Add(dr);
            }
        
收获园豆:2
嗷大喵学编程 | 园豆:165 (初学一级) | 2015-08-04 11:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册