Exemplo n.º 1
0
        public OrderMap Append(SqlTable map, IEnumerable <NamedOrderItem> namedOrderItems,
                               bool throwOnMissingProperty = true, bool caseSensitive = true)
        {
            if (namedOrderItems == null)
            {
                return(this);
            }

            var setOrders = namedOrderItems.Where(x => x != null).Select(p =>
            {
                if (!map.TryGetColumn(p.PropertyName, out var mapItem, caseSensitive))
                {
                    if (throwOnMissingProperty)
                    {
                        throw new ArgumentException($"Order property {p.PropertyName} have no counterpart in the map");
                    }
                    else
                    {
                        return(null);
                    }
                }

                var item = new OrderMapItem(mapItem, p.Direction);
                return(item);
            }).Where(x => x != null);

            Items.AddRange(setOrders);
            return(this);
        }
Exemplo n.º 2
0
        public OrderMap Append(SqlTable map, object order,
                               bool throwOnMissingProperty = true, bool caseSensitive = true)
        {
            if (order == null)
            {
                return(this);
            }

            var mapType    = order.GetType();
            var orderProps = OrderProps.GetOrAdd(mapType, o => o.GetProperties()
                                                 .Where(p => p.PropertyType == typeof(OrderItem)).ToDictionary(p => p.Name));
            var entityProps = map;
            var setOrders   = orderProps.Values.Select(p =>
            {
                if (!map.TryGetColumn(p.Name, out var mapItem, caseSensitive))
                {
                    if (throwOnMissingProperty)
                    {
                        throw new ArgumentException($"Order property {p.Name} of type {mapType.Name} have no counterpart in the map");
                    }
                    else
                    {
                        return(null, null);
                    }
                }


                var orderItem = (OrderItem)p.GetValue(order);
                return(mapItem, orderItem);
            })
                              .Where(g => g.orderItem != null)
                              .OrderBy(g => g.orderItem.Index)
                              .Select(g => new OrderMapItem(g.mapItem, g.orderItem.Direction));

            return(Append(setOrders));
        }