示例#1
0
        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);
        }