我应该自定义一个 Func 表达式,以便检查其中的字节数组,如果该数组等于 POCO 中的字段,则返回 true。
所以不知道怎么定义...
public Patient GetPatientByIdentificationCode(byte[] bytes)
{
return DbSet.Where(Func<>).FirstOrDefault();
}
患者有一个标识码,它是一个字节数组......
谢谢
原则上,这样的事情应该有效:
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
因为我怀疑您会经常使用它。
要么,要么更改为比字节数组更容易比较(和可显示)的类型。