gpt4 book ai didi

c# - 如何使用 linq 返回一个数组中与另一个数组的整数属性不匹配的整数?

转载 作者:太空狗 更新时间:2023-10-29 21:25:18 25 4
gpt4 key购买 nike

我有以下方法签名:

 internal static int[] GetStudentIDsThatAreNotLinked(PrimaryKeyDataV1[]
existingStudents, IQueryable<Student> linkedStudents)

PrimaryKeyData 是一个以 ServerID 和 LocalID 整数作为属性的类。Student 是一个类(在其他属性中)有一个称为 StudentID 的整数。

在英语中,我想要做的是返回一个整数数组,这些整数在 existingStudents[...].ServerID 但不在 linkedStudents[...].StudentID 中

如果 'existingStudents' 和 'linkedStudents' 都是整数数组,我会使用如下的 linq 查询:

return from es in existingStudents where
!linkedStudents.Contains<int>(es) select es;

..然后可以将其转换为整数数组。

我想做的是给 Contains 一个 IEqualityOperator,如果 PrimaryKeyData.ServerID == Student.StudentID,它将认为 PrimaryKeyData 类等于 Student 类

所以我想我需要一个 lambda 表达式,但我对如何构建它感到很困惑。

我认为我正朝着正确的方向前进,但有人可以帮助我跨过最后的障碍吗?

最佳答案

所以,我的理解是,您想获取 PrimaryKeyDataV1 的所有实例,其 ServerID 属性在 linkedStudents 参数的任何 students.StudentID 属性中都不存在?

internal static PrimaryKeyDataV1[] GetStudentsThatAreNotLinked(PrimaryKeyDataV1[] existingStudents, IQueryable<Student> linkedStudents)
{
var results = existingStudents.Select(s => s.ServerID)
.Except(linkedStudents.Select(link => link.StudentID))
.ToArray();

return existingStudents.Where(stud => results.Contains(stud.ServerID));
}

或者如果您只想要一个 ID 数组...

internal static int[] GetStudentIDsThatAreNotLinked(PrimaryKeyDataV1[] existingStudents, IQueryable<Student> linkedStudents)
{
return existingStudents.Select(s => s.ServerID)
.Except(linkedStudents.Select(link => link.StudentID))
.ToArray();
}

关于c# - 如何使用 linq 返回一个数组中与另一个数组的整数属性不匹配的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3158703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com