问题:取数据库表中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);