自定义Func<比;Linq where子句中的委托
本文关键字:子句 where Linq Func 自定义 | 更新日期: 2023-09-27 18:05:11
我应该自定义一个Func表达式,以便我应该检查其中的字节数组,如果这个数组等于POCO中的一个字段,则返回true .
所以我不知道如何定义它…
public Patient GetPatientByIdentificationCode(byte[] bytes)
{
return DbSet.Where(Func<>).FirstOrDefault();
}
患者有一个identiationcode,它是一个字节数组…
谢谢
原则上这样做是可以的:
return DbSet
.Where(i => i.IdentificationCode.Length == bytes.Length)
.FirstOrDefault();
如果你能说得更清楚,我们可能会更有帮助。具体来说,您可以使用DbSet
是否是Patient
的集合
如果字节的顺序是相等的一部分,那么您可以使用SequenceEqual
:
return DbSet.Where(p => p.IdentificationCode.SequenceEqual(bytes)).FirstOrDefault();
如果顺序无关紧要,则可以检查元素是否相同且长度是否相同:
return DbSet.Where(p =>
p.IdentificationCode.Length == bytes.Length &&
p.IdentificationCode.Intersect(bytes).Count() == p.IdentificationCode.Length)
.FirstOrDefault();
它可能比SequenceEqual
慢,所以只在字节顺序不重要的情况下使用它。
作为旁注,我强烈建议将此作为Patient
的真正方法或扩展方法,因为我怀疑您将经常使用它。