问题:取数据库表中DateTime类型字段时,截取年份子串,去除重复字段,如何处理?
方法:使用Linq中的Lambda表达式,可以轻松实现,以下是简单的示例代码:
public void BindNF() { //这里要去除相同的年份,通过Linq的Lambda表达式实现 DM dm = new DM(); string strSQL = "select * from [预警记录] "; DataSet ds = dm.getsql(strSQL); ArrayList al = new ArrayList(); foreach (DataRowView drv in ds.Tables[0].DefaultView) { al.Add(drv["发布时间"].ToString().Substring(0, drv["发布时间"].ToString().IndexOf("-"))); } //构造泛型集合 List<string> years = new List<string>(); for (int i = 0; i < al.Count; i++) { years.Add(al[i].ToString()); }
//Distinct()方法用于返回序列中的非重复元素 var result = years.Distinct();
this.ddlNF.DataSource = result; this.ddlNF.DataBind(); }
2、另外一种非LINQ实现方法,利用普通的循环比较方法也可以实现:
string s1= "a,b"; string s2 = "a,b,c,d"; string[] str1 = s1.Split(','); string[] str2 = s2.Split(','); string s3 = ""; bool flag = true; foreach (string tempS in str2) { flag = true; foreach (string tempS2 in str1) { if (tempS2 == tempS) { flag = false; break; } } if (flag) { s3 += tempS + ","; } } if (s3 != "") { s3 = s3.Remove(s3.Length - 1, 1); } Response.Write(s3);