public IEnumerable <T> Get(params object[] keys) { var _cols = new _ColumnWithValue[0]; EnumerableUtil.Each(keys, y => { _cols = EnumerableUtil.ToArray( EnumerableUtil.UnionAll( _cols, EnumerableUtil.Except( EnumerableUtil.Join( EnumerableUtil.Where(this._Columns, x => x.IsForeignKey), EnumerableUtil.Where(_Column.GetColumns(y.GetType()), x => x.IsKey), x => x.Alias ?? x.Name, x => x.Alias ?? x.Name, (o, i) => new _ColumnWithValue(o, i, y)), _cols, EnumerableUtil.CreateComparer <_ColumnWithValue>((a, b) => a.EntityColumn.Name == b.EntityColumn.Name)))); }); var _predicate = string.Empty; EnumerableUtil.Each(_cols, x => _predicate += $"AND {x.EntityColumn.Name}=? "); return(this.ToEnumerable( this._SqlSelect + _predicate, EnumerableUtil.ToArray( EnumerableUtil.Select(_cols, x => x.ForeignValue)))); }
public int Remove(params object[] keys) { var _keys = new _ColumnWithValue[0]; EnumerableUtil.Each(keys, y => { _keys = EnumerableUtil.ToArray( EnumerableUtil.UnionAll( _keys, EnumerableUtil.Except( EnumerableUtil.Join( EnumerableUtil.Where(this._Columns, x => x.IsKey || x.IsForeignKey), EnumerableUtil.Where(_Column.GetColumns(y.GetType()), x => x.IsKey), x => x.Alias ?? x.Name, x => x.Alias ?? x.Name, (o, i) => new _ColumnWithValue(o, i, y)), _keys, EnumerableUtil.CreateComparer <_ColumnWithValue>((a, b) => a.EntityColumn.Name == b.EntityColumn.Name)))); }); var _predicate = string.Empty; EnumerableUtil.Each(_keys, x => _predicate += $"AND {x.EntityColumn.Name}=? "); return(this.Execute( $"DELETE FROM {this._Table} WHERE 1=1 {_predicate}", EnumerableUtil.ToArray( EnumerableUtil.Select(_keys, x => x.ForeignValue)))); }