Tôi đang sử dụng một số mã (có sẵn here trên MSDN) để tự động xây dựng các biểu thức LINQ chứa nhiều OR 'mệnh đề'.Xây dựng 'phẳng' thay vì 'cây' biểu thức LINQ
Mã liên quan là
var equals = values.Select(value => (Expression)Expression.Equal(valueSelector.Body, Expression.Constant(value, typeof(TValue))));
var body = equals.Aggregate<Expression>((accumulate, equal) => Expression.Or(accumulate, equal));
này tạo ra một biểu thức LINQ mà trông giống như sau:
(((((ID = 5) OR (ID = 4)) OR (ID = 3)) OR (ID = 2)) OR (ID = 1))
Tôi đánh giới hạn đệ quy (100) khi sử dụng cụm từ này, vì vậy tôi muốn tạo biểu thức giống như sau:
(ID = 5) OR (ID = 4) OR (ID = 3) OR (ID = 2) OR (ID = 1)
Làm cách nào để sửa đổi ví dụ cũ pression xây dựng mã để làm điều này?
Thay đổi nhỏ - thay thế equalsList.Length bằng equalsList.Count-1 - và nó hoạt động hoàn hảo. Cảm ơn. –