//导入linq命名空间,然后distinct一下就可以了.关键代码如下:
usingSystem.Linq
//比如,list实例为list
varobj=list.Distinct()
//或者麻烦点要根据list的字段xxx过滤就是
varobj_1=frompinlistselectp.xxxdistinct()
扩展资料
list()函数与array()类似,只是它可以在一次 *** 作中从一个数组内提取多个值,同时为多个变量赋值。其形式如下:
voidlist(mixed?)从数据库或文件中提取信息时,这种构造尤其有用。例如,假如你希望格式化并输出从一个文本,文件中读取信息。文件的每一行都包含用户信息,如姓名、职业和喜爱的颜色,每一项用竖线分隔。典型的一行如下所示:
NinoSanzi|profesionalgolfer|green
可以通过一个简单的循环使用list()来读取每一行,将各部分数据赋给变量,按照需要格式化并输出数据。
参考资料来源:百度百科:list
Distinct方法的第二重载可以Enumerable.Distinct<TSource> (IEnumerable<TSource>, IEqualityComparer<TSource>),
例如数据类为
class School
{
public int Id { getset}
public string Name { getset}
//是否重点学校
public bool IsKeySchool { getset}
}
实现IEqualityComparer<School>的比较器类为
class SchoolComparer : EqualityComparer<School>
{
public override bool Equals(School x, School y)
{
return x.IsKeySchool==y.IsKeySchool
}
public override int GetHashCode(School obj)
{
return obj.IsKeySchool.GetHashCode()
}
}
原始列表为
var schoolList = new List<School>{
new School{Id=1, Name="三中",IsKeySchool=true},
new School{Id=2, Name="五中",IsKeySchool=true},
new School{Id=3, Name="十中",IsKeySchool=false},
new School{Id=4, Name="十五中",IsKeySchool=true},
new School{Id=5, Name="二十中",IsKeySchool=false},
}
执行
var tempList = schoolList.Distinct(new SchoolComparer())
结果就只有两条“三中”和“十中”
text类型就别做DISTINCT了,效率会让你吐血。实在想做的话,尝试newslist = newslist.OrderBy(x=>x.nID).ToList().Distinct()
将数据加载入内存,用CLR来做DISTINCT
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)