//public List<moduleCondition> GetConnectedModules() //{ // var moduleConnectedList = new List<moduleCondition>(); // var sel1 = from o1 in context.Properties // where o1.PropId == 100 && o1.Value == "1" // select o1.ObjectId; // var sel2 = from o1 in context.Properties // join o2 in context.Objects on o1.ObjectId equals o2.Id // where o1.PropId == 101 && sel1.Contains(o1.ObjectId) // select new // { // modId = o1.ObjectId, // modRun = o1.Value, // modName = o2.Name // }; // var a = sel2.Any(); // if (a) // { // foreach (var item in sel2) // { // var result = new moduleCondition(); // result.idModule = item.modId; // result.nameModule = item.modName; // result.isRun = item.modRun; // result.isConnected = true; // moduleConnectedList.Add(result); // } // } // else // { // var result = new moduleCondition(); // moduleConnectedList.Add(result); // } // return moduleConnectedList; //} public List <moduleCondition> modulesToConnect() { var listOfAvaibleModules = new List <moduleCondition>(); var sel = from o1 in context.Properties join o2 in context.Objects on o1.ObjectId equals o2.Id join o3 in context.Properties on o1.ObjectId equals o3.ObjectId where o1.PropId == 100 && o1.Value == "0" && o3.PropId == 102 select new { modId = o1.ObjectId, modName = o2.Name, modDescr = o3.Value }; var a = sel.Any(); if (a) { foreach (var item in sel) { var result = new moduleCondition(); result.idModule = item.modId; result.nameModule = item.modName; result.descrModule = item.modDescr; //result.isRun = item.modRun; listOfAvaibleModules.Add(result); } } else { var result = new moduleCondition(); listOfAvaibleModules.Add(result); } return(listOfAvaibleModules); }
public List <moduleCondition> GetModules() { List <moduleCondition> moduleConnectedList = new List <moduleCondition>(); using (var context = new EFDbContext()) { var moduleList = context.Objects.Where(t => t.Type == 3).Join(context.Properties, o => o.Id, p => p.ObjectId, (o, p) => new { Id = o.Id, Name = o.Name, IsConnected = context.Properties.Where(q => q.PropId == 100 && q.ObjectId == o.Id).Select(q => q.Value).FirstOrDefault(), IsRun = context.Properties.Where(q => q.PropId == 101 && q.ObjectId == o.Id).Select(q => q.Value).FirstOrDefault(), Description = context.Properties.Where(q => q.PropId == 102 && q.ObjectId == o.Id).Select(q => q.Value).FirstOrDefault() }).Distinct(); foreach (var item in moduleList) { var module = new moduleCondition { idModule = item.Id, isConnected = Convert.ToBoolean(item.IsConnected), isRun = item.IsRun, descrModule = item.Description, nameModule = item.Name }; moduleConnectedList.Add(module); } } return(moduleConnectedList); }