Пример #1
0
        public static T First <T>(string fieldToCompare, object valueToCompare, IEnumerable <T> rows)
        {
            Func <T, bool> compare = (i) =>
            {
                DataRow r = i as DataRow;
                if (EC.IsNuDelDetch(r))
                {
                    return(false);
                }
                else
                {
                    if (!r.IsNull(fieldToCompare) && r.Field <object>(fieldToCompare).Equals(valueToCompare))
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            };

            T result = rows.AsQueryable().FirstOrDefault <T>(compare);

            return(result);
        }
Пример #2
0
        /// <summary>
        /// Creates a non-repeated list of items (HashSet) from values in a given DataTable's Column
        /// </summary>
        /// <typeparam name="T">the type of desired elements in the output list</typeparam>
        /// <param name="column">input Column with items to generate the list from</param>
        /// <returns>a HashSet with elements of generic type</returns>
        public static IList <T> HashFrom <T>(IEnumerable <DataRow> array, String Field)
        {
            if (array == null)
            {
                throw new ArgumentException("arra is null", "array");
            }

            IEnumerable <object> array2 = EC.NotNulls(array, Field).Select(o => o.Field <object>(Field));

            Func <object, T> converter = o => (T)Convert.ChangeType(o, typeof(T));

            IEnumerable <T> enumcol = array2.Distinct().Select <object, T>(converter);

            return(enumcol.ToList <T>());
        }
Пример #3
0
        /// <summary>
        /// Forces the check-up of a Data Row according to the DataColumnChangeEventHandler given
        /// </summary>
        /// <typeparam name="T">DatTable, DataRow[] or DataRow</typeparam>
        /// <param name="table2">       object to check</param>
        /// <param name="columnChecker">DataColumnChangeEventHandler to use for checking</param>
        public static void CheckRows <T>(T table2, DataColumnChangeEventHandler columnChecker)
        {
            Type tipo = typeof(T);

            if (tipo.Equals(typeof(DataTable)))
            {
                DataTable dt = table2 as DataTable;

                DataRow[] rows = dt.Rows.OfType <DataRow>().ToArray();

                CheckRows(rows, columnChecker);
            }
            else if (tipo.Equals(typeof(DataRow[])))
            {
                IEnumerable <DataRow> rows = table2 as IEnumerable <DataRow>;

                foreach (DataRow r in rows)
                {
                    CheckRows(r, columnChecker);
                }
            }
            else if (tipo.Equals(typeof(DataRow)))
            {
                DataRow r          = table2 as DataRow;
                DataRow currentRow = null;
                currentRow = r;
                DataRowChangeEventArgs args = new DataRowChangeEventArgs(currentRow, DataRowAction.Change);

                if (currentRow.RowState == DataRowState.Unchanged)
                {
                    currentRow.SetModified();
                }
                EC.CheckRowColumn(args, columnChecker);
                currentRow.AcceptChanges();
            }
            else
            {
                NotImplemented();
            }
        }