2016-10-28 16 views
0

Я использую Entity Framework в приложении Windows C#, пытаясь извлечь данные из двух сущностей с использованием DbContext и хочу сделать простое соединение, но разбивка кода (в строке var modellst). Мой примерный код нижеВызов «Чтение» при закрытии устройства чтения данных не является допустимой операцией. в Entity Framework

 using (var ctx = new DbEntities()) 
     { 

      var lst = ctx.AUMaterials.Where(o => o.ServiceRequestTypeId == serviceReqId && o.SSStock.Quantity > 0).ToList(); 
      var modellst = ctx.AUModelMaterials.Where(o => o.ModelId == modelId).ToList(); 

      // here i want to make join on these two list 
     } 

Здесь в первом списке тысячи записей в объекте AUMaterials. И я думаю, что потребуется много времени для загрузки. То же самое в объекте AUModelMaterials, Здесь также тысячи записей. Но тот же код отлично работает на ранней стадии.

+0

У вас есть навигационные свойства или свойства коллекции? –

+0

Здесь AUMaterials, AUModelMaterials, SSStock связаны друг с другом. Материалы к AUModelМатериалы соотносятся друг с другом, в то время как AUMaterials SSStock отношения один к одному. –

+0

И моя сущность «AUMaterial», имеющая такие свойства, как публичный виртуальный ICollection AUModelMaterials {get; задавать; } –

ответ

1
var results = (from t1 in context.AUMaterials 
         join t2 in context.AUModelMaterials 
         on t1.Col1 equals t2.Col1 
         where t1.ServiceRequestTypeId == serviceReqId && t1.SSStock.Quantity > 0 && t2.ModelId == modelId 
         select new { t1, t2}).ToList(); 

Joining на нескольких столбцах

var results = (from t1 in context.AUMaterials 
         join t2 in context.AUModelMaterials 
         on new {t1.Col1, t1.Col2, t1.Col3 } equals 
          new { t2.Col1, t2.Col2, t2.Col3 } 
         where t1.ServiceRequestTypeId == serviceReqId && t1.SSStock.Quantity > 0 && t2.ModelId == modelId 
         select new { t1, t2}).ToList(); 
+0

Спасибо @asdnafn Это хорошо работает –

 Смежные вопросы

  • Нет связанных вопросов^_^