我有一个这个linq查询:
var fling = (from b in flowering.FlowerViews
where ((!string.IsNullOrEmpty(flow_name)) && b.FLOWER_NAME == flow_name) || flow_name==""
where ((!string.IsNullOrEmpty(color_name)) && b.COLOR_NAME == color_name) || color_name == ""
where ((!string.IsNullOrEmpty(size)) && b.FLOWER_SIZE == size) || size==""
where ((low_price!=0) && low_price<= b.FLOWER_PRICE) || low_price==0
where ((high_price!=0) && high_price >= b.FLOWER_PRICE) || high_price==0
orderby b.COLOR_NAME
select new { b.FLOWER_NAME, b.COLOR_NAME, b.FLOWER_SIZE, b.FLOWER_PRICE, b.CHAR_DESC});
我的where子句对我有用,但当我为返回值的每个循环运行一个时,会有重复数据,因为b.CHAR_DESC有3个值,其中所有其他返回数据只有一个。我想知道是否有办法将分配给b.CHAR_DESC的3个值分配到一个不会导致重复的b.Flower_name出现的结构中
答案 0 :(得分:5)
在最后一个括号后的select子句的末尾添加.Distinct()
。
答案 1 :(得分:5)
基于this post,您应该可以为匿名类型调用Distinct()
var list = fling.Distinct().ToList();
编译器将根据属性值处理匿名类型GetHashCode()
和Equals()
。