c# linq Distinct 过滤重复项怎么做啊

c# linq Distinct 过滤重复项怎么做啊,第1张

text类型就别做DISTINCT了,效率会让你吐血。

实在想做的话,尝试newslist = newslist.OrderBy(x=>x.nID).ToList().Distinct()

数据加载入内存,用CLR来做DISTINCT

假设你上图表格数据为

datatable

dt,列分别为aa,bb,cc,dd

var

query

=

from

p

in

dt.asenumerable()

//分组

group

p

by

new

{

t1

=

p.field

("aa").tostring().substring(0,

p.field

("aa").tostring().length

-

2),

t2

=

p.field

("bb"),

t3

=

p.field

("cc")

}

into

g

select

new

{

cola

=

g.key.t1,

colb

=

g.key.t2,

colc

=

g.key.t3,

cold

=

g.sum(c

=>

c.field

("dd"))

}

//转datatable

datatable

dtnew

=

dt.clone()

datarow

drnew

foreach

(var

p

in

query)

{

drnew

=

dtnew.newrow()

drnew["aa"]

=

p.cola

drnew["bb"]

=

p.colb

drnew["cc"]

=

p.colc

drnew["dd"]

=

p.cold

dtnew.rows.add(drnew)

}

dtnew

为最终结果

注:转换过程中要考虑空值的情况

//导入linq命名空间,然后distinct一下就可以了.关键代码如下:

usingSystem.Linq

//比如,list实例为list

varobj=list.Distinct()

//或者麻烦点要根据list的字段xxx过滤就是

varobj_1=frompinlistselectp.xxxdistinct()

扩展资料

list()函数与array()类似,只是它可以在一次 *** 作中从一个数组内提取多个值,同时为多个变量赋值。其形式如下:

voidlist(mixed?)

从数据库或文件中提取信息时,这种构造尤其有用。例如,假如你希望格式化并输出从一个文本,文件中读取信息。文件的每一行都包含用户信息,如姓名、职业和喜爱的颜色,每一项用竖线分隔。典型的一行如下所示:

NinoSanzi|profesionalgolfer|green

可以通过一个简单的循环使用list()来读取每一行,将各部分数据赋给变量,按照需要格式化并输出数据。

参考资料来源:百度百科:list


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9898850.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存