public static Dictionary <int, List <SimpleUserDefineEntityRow> > GetDictEntityUserDefineRows(List <int> entityIDs, List <int> ddlUserDefineEntityColumnIDs) { Dictionary <int, List <SimpleUserDefineEntityRow> > toReturn = new Dictionary <int, List <SimpleUserDefineEntityRow> >(); entityIDs = entityIDs.Distinct().ToList(); string queryRowValue = pdmUserDefineMutipleColumnEntityRowValue; if (entityIDs != null && entityIDs.Count > 0) { //AND (EntityID IN (3031, 3095)) queryRowValue = queryRowValue + " where " + DataAcessHelper.GenerateColumnInClauseWithAndCondition(entityIDs, "EntityID", false); } if (ddlUserDefineEntityColumnIDs != null && ddlUserDefineEntityColumnIDs.Count > 0) { //and UserDefineEntityColumnID in ( 442,444) queryRowValue = queryRowValue + DataAcessHelper.GenerateColumnInClauseWithAndCondition(ddlUserDefineEntityColumnIDs, "UserDefineEntityColumnID", true); } DataTable RowValuDatatable; using (SqlConnection conn = new SqlConnection(PLMConstantString.PLM_APP_ConnectionString)) { conn.Open(); RowValuDatatable = DataAcessHelper.GetDataTableQueryResult(conn, queryRowValue); } CLROutput.SendDebugDataTable(RowValuDatatable); // DataSetUtilities.SendDataTable(RowValuDatatable); // Entity level group var groupByEntityIdQuery = from row in RowValuDatatable.AsDataRowEnumerable() group row by new { EntityID = (int)row["EntityID"] } into grp select new { EntityID = grp.Key.EntityID, RowIDAndValueList = grp.Select(r => new { RowID = (int)r["RowID"], SortOrder = (r["SortOrder"] as int?).HasValue ? (r["SortOrder"] as int?).Value : 0, UserDefineEntityColumnID = (int)r["UserDefineEntityColumnID"], ValueText = r["ValueText"] as string }).ToList(), }; foreach (var o in groupByEntityIdQuery) { int entityId = o.EntityID; var RowIDAndValueList = o.RowIDAndValueList; var simpleUserDefineEntityRowList = from row in RowIDAndValueList group row by new { RowID = row.RowID, SortOrder = row.SortOrder } into grpRow select new { RowId = grpRow.Key.RowID, SortOrder = grpRow.Key.SortOrder, RowCellValueList = grpRow.Select ( row => new { ColumnId = row.UserDefineEntityColumnID, ValueText = row.ValueText } ) }; List <SimpleUserDefineEntityRow> listDto = new List <SimpleUserDefineEntityRow>(); foreach (var queryItem in simpleUserDefineEntityRowList) { SimpleUserDefineEntityRow aSimpleUserDefineEntityRow = new SimpleUserDefineEntityRow(); aSimpleUserDefineEntityRow.RowId = queryItem.RowId; aSimpleUserDefineEntityRow.SortOrder = queryItem.SortOrder; foreach (var column in queryItem.RowCellValueList) { int columnId = column.ColumnId; //int controlType = dictColumnIdControType[columnId]; //object value= ControlTypeValueConverter.ConvertValueToObject(column.ValueText, controlType); aSimpleUserDefineEntityRow.Add(columnId, column.ValueText); } listDto.Add(aSimpleUserDefineEntityRow); } toReturn.Add(o.EntityID, listDto); } return(toReturn); }