IEnumerable<Item> items = ...
var noDistinct = items.GroupBy(x => x.Prop1).All(x => x.Count() == 1);
// it returns true if all items have different Prop1, false otherwise
public static bool ContainsDuplicates<T1>(this IEnumerable<T1> source, Func<T1, T2> selector)
{
var d = new HashSet<T2>();
foreach(var t in source)
{
if(!d.Add(selector(t)))
{
return true;
}
}
return false;
}
// Create an enumeration of the distinct values of Prop1
var propertyCollection = objectCollection.Select(o => o.Prop1).Distinct();
// If the property collection has the same number of entries as the object
// collection, then all properties are distinct. Otherwise there are some
// duplicates.
return propertyCollection.Count() == objectCollection.Count();
DataTable table=new DataTable("MyTable");//Actually I am getting this table data from database
DataColumn col=new DataColumn("Createdby");
var childrows = table.AsEnumerable().Select( row => row.Field<object>(col)).Distinct().ToArray();
9条答案
按热度按时间z4bn682m1#
一个简短的,只有一个枚举的解决方案将是:
其可以读作:* 当 *
All
* 项可以 *Add
-艾德为一个集合时,列表没有重复项。这在概念上类似于Jake Pearsons解决方案;但它忽略了独立的投射概念; OP的问题将被解决为:
0ve6wy6x2#
你只想检查Prop1,对吗?
什么是:
d7v8vwbk3#
我认为这个方法会奏效。
xoshrz7s4#
x
是true
,如果list
有重复。knpiaxh15#
你试过Enumerable.Distinct(IEnumerable, IEqualityComparer)吗?
qyswt5oh6#
这可能是为了提高性能,但这是迄今为止唯一正确的答案。
alen0pnh7#
您可以从IEnumerable中选择非重复值,然后根据完整集合的计数检查计数。
范例:
ua4mk5z48#
就个人而言,我喜欢扩展方法的整洁。如果你的对象不需要选择器来决定是否相等,那么这就很好用。
qvk1mo1f9#
我们可以通过在
ArrayList
中使用.Distinct()
来删除重复的条目。示例:
我在
testtable
中有一个createdby
列,其中有5个重复条目。我只能坐一排考虑到上面的表格,我只需要选择一个“雷迪”