我想使用"标准"对象动态构建LinqToSQL和EntityFramework查询子句,如果需要,在Nutshell PredicateBuilder中利用C#(http://www.albahari.com/nutshell/predicatebuilder.aspx)
只是要清楚 - 我不明白如何创建C#表达式; o)
过滤器运算符和值被定义为我的"查询条件"类的属性,如下所示:
public class QueryCriteria
{
public DateTimeFilter DateTimeCompleted { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
"过滤器"定义为:
public class DateTimeFilter
{
public FilterOperator FilterOperator { get; set; }
public DateTime FilterToken { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
而"过滤器运算符"是一个简单的C#枚举:
public enum FilterOperator : int
{
ExactMatch = 1,
BeginsWith = 2,
Contains = 3,
EndsWith = 4,
GreaterThan = 5,
GreaterThanOrEqualTo = 6,
LessThan = 7,
LessThanOrEqualTo = 8,
}
Run Code Online (Sandbox Code Playgroud)
我想使用以下方法在我的存储库中动态构建我的LinqToSQL和EntityFramework查询:
if (criteria.DateTimeCompleted != null)
{
var …
Run Code Online (Sandbox Code Playgroud) 这与本主题的其他问题类似,但不同.
我有一个包含记录列表的表,每个记录都有一个选择复选框.
在表格标题中,我有一个"全选"复选框.
当用户选中/取消选中"全选"时,将选择/取消选择记录.这很好用.
但是,当取消选择一个或多个记录时,我需要取消选中"全选"复选框.
我的加价:
<table>
<thead>
<tr>
<th>Name</th>
<th><input type="checkbox" data-bind="checked: SelectAll" /></th>
</tr>
</thead>
<tbody data-bind="foreach: $data.People">
<tr>
<td data-bind="text: Name"></td>
<td class="center"><input type="checkbox" data-bind="checked: Selected" /></td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
我的脚本(已编辑):
function MasterViewModel() {
var self = this;
self.People = ko.observableArray();
self.SelectAll = ko.observable(false);
self.SelectAll.subscribe(function (newValue) {
ko.utils.arrayForEach(self.People(), function (person) {
person.Selected(newValue);
});
});
}
my.Person = function (name, selected) {
var self = this;
self.Name = name;
self.Selected = ko.observable(false);
}
Run Code Online (Sandbox Code Playgroud)