-1

クエリに OR 条件を動的に追加する方法。EF5.0、LINQ、MVC4.0、およびリポジトリ パターンを使用したコード。

public ActionResult Index()
    {
      var model = new AssignedSearchFields();   //ViewModel
      List<LClient.Model.Attribute> allFields =                      Common.GetAssignedSearchFields(User.Identity.Name, userID, "EntityType Name 1");     
      model.SearchFields = allFields;  // List allFields having dynamic number of items.
      model.Entities = entityRepository.GetMany(e => e.EntityTypeID == 1 && e.InstanceID <= 10 && (e.AttributeID == 1 || e.AttributeID == 2 || e.AttributeID == 3 || e.AttributeID == 4)); // Here I want to use AttributeID dynamically without OR conditions.
      return View(model);    
}  
4

1 に答える 1

1

PredicateBuilderこの場合、あなたが必要かどうかわかりません

Contains十分なはずです。

var dynamicIds = new[]{1, 2, 3, 4};

//or something like that, if you want values coming from 'GetAssignedSearchFields'
var dynamicIds = Common.GetAssignedSearchFields(User.Identity.Name, userID, "EntityType Name 1")
                   .Select(m => m.Id);
//xxx
      model.Entities = entityRepository.GetMany(e => 
                          e.EntityTypeID == 1 && 
                          e.InstanceID <= 10 
                          && (dynamicIds.Contains(e.AttributeID));
于 2013-07-26T09:09:58.230 に答える