我应该自定义一个Func表达式,这样我就可以检查其中的一个字节数组,如果这个数组等于POCO中的一个字段,则返回true。
所以我不知道如何定义它......
public Patient GetPatientByIdentificationCode(byte[] bytes)
{
return DbSet.Where(Func<>).FirstOrDefault();
}
患者的识别码是一个字节的arrya ......
感谢
答案 0 :(得分:1)
原则上这样的事情应该有效:
return DbSet
.Where(i => i.IdentificationCode.Length == bytes.Length)
.FirstOrDefault();
如果你可以更清楚,那么我们可能会更有帮助。具体而言,如果DbSet
是Patient
的集合,则可以告诉我们使用。
答案 1 :(得分:0)
如果字节的顺序是相等的一部分,那么您可以使用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
上将其作为真正的方法或扩展方法,因为我怀疑你会使用它很多。
或者更改为比字节数组更容易比较(和可显示)的类型。