我有一组DataRow对象.我应该根据"URL_Link"列选择不同的行.在这篇文章之后,我提出了以下代码.
是否可以将其应用于DataRow集合?
IEnumerable<DataRow> results = GetData();
results.GroupBy(row => row.Field<string>("URL_Link")).Select(grp => grp.First());
Run Code Online (Sandbox Code Playgroud)
它在语法上是正确的,但它没有解决问题.它不会删除重复的行.我究竟做错了什么?
我有一个CustomObjects和一个自定义的数组IEqualityComparer<CustomObject>.我已经硬编码了IEqualityComparer.GetHashCode()返回常量的方法42.
当我Distinct在数组上运行linq的方法时,没有任何东西被过滤掉.谁知道为什么?
注意:我知道这里有很多关于这个问题的问题,但是,我见过的(C#Distinct on IEnumerable <T> with custom IEqualityComparer,Distinct()with lambda?)等只是为了确保实施GetHashCode.他们都没有解释,为什么它不起作用.
码:
public class CustomObject
{
public string Name { get; set; }
}
public class CustomObjectEqualityComparer : IEqualityComparer<CustomObject>
{
public bool Equals(CustomObject x, CustomObject y)
{
//Every CustomObject should now be 'equal'!
return x.GetHashCode() == y.GetHashCode();
}
public int GetHashCode(CustomObject obj)
{
//Every CustomObject should now be 'equal'!
return …Run Code Online (Sandbox Code Playgroud) 我很难根据特定的分隔符重复列表.
例如,我有4个字符串,如下所示:
苹果|梨|水果|篮
橙|芒果|水果|乌龟
紫|红|黑|绿
英雄|托尔|铁人|绿巨人
在这个例子中,我希望我的列表在第3列中只有唯一值,因此它会产生一个如下所示的List,
苹果|梨子|水果|篮子
紫色|红色|黑色|绿色
英雄|托尔|铁人|绿巨人
在上面的示例中,我将摆脱第2行,因为第1行在第3列中具有相同的结果.任何帮助都会很棒,在C#中重复数据删除很难.
我是如何测试的:
static void Main(string[] args)
{
BeginListSet = new List<string>();
startHashSet();
}
public static List<string> BeginListSet { get; set; }
public static void startHashSet()
{
string[] BeginFileLine = File.ReadAllLines(@"C:\testit.txt");
foreach (string begLine in BeginFileLine)
{
BeginListSet.Add(begLine);
}
}
public static IEnumerable<string> Dedupe(IEnumerable<string> list, char seperator, int keyIndex)
{
var hashset = new HashSet<string>();
foreach (string item in list)
{
var array = item.Split(seperator);
if (hashset.Add(array[keyIndex]))
yield return item;
} …Run Code Online (Sandbox Code Playgroud) 我有一个datatable列有一些重复的值,我想将这些值添加到一个listbox但没有重复
我尝试了以下内容
Dim a = From row In table.AsEnumerable.Distinct.ToList Select row.Field(Of String)("name")
Run Code Online (Sandbox Code Playgroud)
但它给了我重复的值,如何在没有重复的情况下完成?
我正在尝试在复杂类型的集合上编写LINQ查询.我想在这个集合上写一个截然不同的查询,以获得两个字段的组合.
我不认为Lambda表达式支持Distinct的管道(f => f.propertyname).希望它做到了.任何人使用更简单的实现,然后使用Comparer?