我想比较两个.NET数组.这是一个比较字节数组的明显实现:
bool AreEqual(byte[] a, byte[] b){
if(a.Length != b.Length)
return false;
for(int i = 0; i < a.Length; i++)
if(a[i] != b[i])
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
这里可以看到更精致的方法(通过谷歌).
我有一个类似的课程
public class Empolyee
{
public string Designation {get ;set;}
public string Discipline {get ;set;}
public int Scale {get ;set;}
public DateTime DOB {get ;set;}
public int Sales {get ;set;}
}
Run Code Online (Sandbox Code Playgroud)
并以可数的说法记录所有员工的记录
List<Employee> Employees;
Run Code Online (Sandbox Code Playgroud)
和一个字符串键列表
var Keys = new List<string>()
{
"Designation",
"Scale",
"DOB"
};
Run Code Online (Sandbox Code Playgroud)
假设列表"Keys"的元素是用户指定的,用户可以指定no或许多关键元素.
现在我想使用列表"Keys"中指定的键对所有"Employees"进行分组,并仅选择"Keys"中指定的属性以及每个组的Sales of Sum.
在我尝试使用的3个解决方案中,以下看起来适用但无法使用它,因为不知道列表"Keys"将如何转换为匿名类型
Employees.GroupBy(e => new { e.Key1, e.Key2, ... })
.Select(group => new {
Key1 = group.Key.Key1,
Key2 = group.Key.Key2,
...
TotalSales = group.Select(employee => employee.Sales).Sum()
});
Run Code Online (Sandbox Code Playgroud) 是否可以使用集合属性在LINQ中进行GroupBy?
例如
void Main()
{
var t1 = new Test() { Children = new List<string>() { "one", "two" } };
var t2 = new Test() { Children = new List<string>() { "one", "two" } };
var t3 = new Test() { Children = new List<string>() { "one", "three" } };
var tests = new List<Test>() { t1, t2, t3 };
var anon = from t in tests
select new
{
Children = t.Children
};
anon.GroupBy(t => t.Children).Dump();
}
public class …Run Code Online (Sandbox Code Playgroud) 这是伪代码
sbyte[] array1 = new sbyte[100];
array1.setValues();
sbyte[] array2 = (sbyte[])array1.Clone();
Run Code Online (Sandbox Code Playgroud)
但array1.getHashCode()不等于array2.getHashCode();
我该怎么做才能获得array1和array2的相同哈希码?
PS:字典没用.因为我想将这些数组添加到哈希表中.每次添加后,我需要检查之前添加的可能相同的内容数组.