使用linq传递两个参数的查询实体

时间:2015-03-11 10:16:44

标签: c# linq entity-framework

通过使用以下代码,我有一种无效的方式返回我表中的特定实体:

     private static EntityModel.Name GetNameEntity(EntityModel.MultiIndexEntities context, int skipCount)
    {
        EntityModel.Name entity = context.Names
                                        .OrderBy(r => r.EntityId)
                                        .Skip(skipCount)
                                        .FirstOrDefault();

        return entity;
    }

现在,我想要更多地改进它。我表中保存的每个实体都有唯一的ID值和类型值。我想要做的是重写我的方法,允许我传入这些值并返回该实体。

我对linq和实体框架都很陌生,到目前为止这是我的鄙视:

   private static EntityModel.Entity GetEntity(EntityModel.MultiIndexEntities context, int registrationTypeId, string name)
    {
        EntityModel.RegistrationType registrationType = context.RegistrationTypes
                                                           .Where(p => p.RegistrationTypeId == registrationTypeId)
                                                           .Where(p => p.Description == name);


        return registrationType;
    }

正如我所说,我不知道自己在做什么。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:2)

如果RegistrationTypeId是表格的标识,找到一个只需要你的实体

context.RegistrationTypes.Find(registrationTypeId);

如果没有,Farhad的代码会做你想要的,但是从你正在做的事情来看......你应该考虑重新设计,因为看起来你可能会过度复杂化。

答案 1 :(得分:1)

您可以更改为:

context.RegistrationTypes
       .Where(p => p.RegistrationTypeId == registrationTypeId && p.Description == name)
       .FirstOrDefault();

context.RegistrationTypes
       .FirstOrDefault(p => p.RegistrationTypeId == registrationTypeId && p.Description == name);