C# 林肯的平等比较-我该怎么办?
我认为下面的代码是好的。但是我怎么能用LINQ写呢?如何比较linq中的Employee type对象C# 林肯的平等比较-我该怎么办?,c#,.net,visual-studio-2008,linq,C#,.net,Visual Studio 2008,Linq,我认为下面的代码是好的。但是我怎么能用LINQ写呢?如何比较linq中的Employee type对象 namespace GenericReplacement { class Program { static void Main(string[] args) { EmployeeComparer employeeComparer = new EmployeeComparer(); Employee
namespace GenericReplacement
{
class Program
{
static void Main(string[] args)
{
EmployeeComparer employeeComparer = new EmployeeComparer();
Employee employee1 = new Employee() { ID = 1, Name = "yusuf", SurName = "karatoprak" };
Employee employee2 = new Employee() { ID = 2, Name = "Ali", SurName = "Yılmaz" };
bool returnValue = employeeComparer.Equals(employee1, employee2);
int returnValueHashCode = employeeComparer.GetHashCode(employee1);
Console.WriteLine("Result: "+returnValue.ToString()+"\n");
Console.WriteLine(returnValueHashCode.ToString());
Console.ReadKey();
}
}
public class EmployeeComparer: EqualityComparer<Employee>
{
public override bool Equals(Employee x, Employee y)
{
return EqualityComparer<Employee>.Default.Equals(x, y);
}
public override int GetHashCode(Employee obj)
{
return EqualityComparer<Employee>.Default.GetHashCode(obj);
}
}
public class Employee
{
public int ID { get; set; }
public string Name { get; set; }
public string SurName { get; set; }
}
}
命名空间通用替换
{
班级计划
{
静态void Main(字符串[]参数)
{
EmployeeComparer EmployeeComparer=新的EmployeeComparer();
Employee employee1=new Employee(){ID=1,Name=“yusuf”,Name=“karatoprak”};
employee2=新员工(){ID=2,Name=“Ali”,Name=“Yılmaz”};
bool returnValue=employeeComparer.Equals(employee1,employee2);
int returnValueHashCode=employeeComparer.GetHashCode(employee1);
Console.WriteLine(“结果:+returnValue.ToString()+”\n”);
Console.WriteLine(returnValueHashCode.ToString());
Console.ReadKey();
}
}
公共类EmployeeComparer:EqualityComparer
{
公共覆盖布尔等于(雇员x,雇员y)
{
返回EqualityComparer.Default.Equals(x,y);
}
公共覆盖int GetHashCode(员工对象)
{
返回EqualityComparer.Default.GetHashCode(obj);
}
}
公营雇员
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共字符串姓氏{get;set;}
}
}
不确定为什么需要执行此操作,因为如果要对这些项目所在的集合(查询等)执行某些操作,通常会使用LINQ。如果出于某种原因,你不得不这样做(同样不知道为什么),你可以这样做:
List<Employee> employees = new List<Employee>();
employees.Add(employee1);
List<Employee> employees2 = new List<Employee>();
employees2.Add(employee2);
IEnumerable<Employee> equalList = employees.Intersect(employees2, new EmployeeComparer());
if (equalList.Count() == 0)
{
MessageBox.Show("Not equal");
}
else
{
MessageBox.Show("Equal");
}
List employees=newlist();
添加(雇员1);
List employees2=新列表();
员工2.添加(员工2);
IEnumerable equalList=employees.Intersect(employees2,new EmployeeComparer());
if(equalList.Count()==0)
{
MessageBox.Show(“不相等”);
}
其他的
{
MessageBox.Show(“相等”);
}
不确定为什么需要执行此操作,因为如果要对这些项目所在的集合(查询等)执行某些操作,通常会使用LINQ。如果出于某种原因,你不得不这样做(同样不知道为什么),你可以这样做:
List<Employee> employees = new List<Employee>();
employees.Add(employee1);
List<Employee> employees2 = new List<Employee>();
employees2.Add(employee2);
IEnumerable<Employee> equalList = employees.Intersect(employees2, new EmployeeComparer());
if (equalList.Count() == 0)
{
MessageBox.Show("Not equal");
}
else
{
MessageBox.Show("Equal");
}
List employees=newlist();
添加(雇员1);
List employees2=新列表();
员工2.添加(员工2);
IEnumerable equalList=employees.Intersect(employees2,new EmployeeComparer());
if(equalList.Count()==0)
{
MessageBox.Show(“不相等”);
}
其他的
{
MessageBox.Show(“相等”);
}
LINQ并不意味着要替换所有现有代码。LINQ特别适合于某些任务(例如查询集合或数据库),但它并不适用于所有任务
如果您有员工的可枚举项,那么使用LINQ比较这两个可枚举项可能是有意义的。例如,您可以使用带比较器的重载:
bool result = Enumerable.SequenceEqual(first, second, comparer);
使用LINQ来比较两个单个项目似乎没有必要。LINQ并不意味着要替换所有现有代码。LINQ特别适合于某些任务(例如查询集合或数据库),但它并不适用于所有任务 如果您有员工的可枚举项,那么使用LINQ比较这两个可枚举项可能是有意义的。例如,您可以使用带比较器的重载:
bool result = Enumerable.SequenceEqual(first, second, comparer);
为了比较两个单独的项目,似乎没有必要使用LINQ。在LINQ中写什么?您编写的代码不需要在LINQ中重写。如何比较LINQ中的Employee type对象?为什么??你想完成什么??LINQ就是顾名思义的查询(LINQ=语言集成查询)——它不是为代码中的每个操作而设计的。我不认为在LINQ中写这样的东西有任何意义或好处(或者更好:使用LINQ)。在LINQ中写什么?您编写的代码不需要在LINQ中重写。如何比较LINQ中的Employee type对象?为什么??你想完成什么??LINQ就是顾名思义的查询(LINQ=语言集成查询)——它不是为代码中的每个操作而设计的。我看不出“在LINQ中”写这样的东西有什么意义或好处(或者更好:使用LINQ)。