0

我应该自定义一个 Func 表达式,以便检查其中的字节数组,如果该数组等于 POCO 中的字段,则返回 true。

所以不知道怎么定义...

public Patient GetPatientByIdentificationCode(byte[] bytes)
    {
        return DbSet.Where(Func<>).FirstOrDefault();
    }

患者有一个标识码,它是一个字节数组......

谢谢

4

2 回答 2

1

原则上,这样的事情应该有效:

return DbSet
  .Where(i => i.IdentificationCode.Length == bytes.Length)
  .FirstOrDefault();

如果您可以更清楚,那么我们可能会更有帮助。具体来说,您可以判断使用是否DbSet是集合Patient

于 2013-03-22T10:58:31.940 回答
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因为我怀疑您会经常使用它。

要么,要么更改为比字节数组更容易比较(和可显示)的类型。

于 2013-03-22T14:35:05.790 回答