我正在使用动态LINQ库 进行过滤的大型应用程序.
我的数据访问层中的所有类都派生自一个共同的祖先DALAncestor,其中包括定义方法GetData:public abstract List GetData(Filter filter)
对于Customer,此方法的实现看起来像这样(简化):
public override List<Entities.Customer> GetData(Filter filter) {
var customers = from c in db.Customers
select new Entites.Customer {
ID = c.ID,
FullName = c.Name,
Country = c.Country
};
return = filter.Apply(customers).ToList();
}
Run Code Online (Sandbox Code Playgroud)
"Apply"是一种获取条件集合并使用Dynamic LINQ Libary应用所有条件的方法.
方法GetData被调用如下:
private void DemoCallGetDataMethod() {
var filter = new Filter();
filter.AddCondition("Country", "Austria");
var list = myCustomerDAL.GetData(filter);
// do something
}
Run Code Online (Sandbox Code Playgroud)
SQL Server获取一个选择语句:
SELECT [t0].ID, [t0].Name, [t0].Country
FROM Customer [t0]
WHERE [t0].Country = @p0
Run Code Online (Sandbox Code Playgroud)
(@ p0是一个参数,其值设置为"奥地利").
如果我只想在"顶层"(主)级别上过滤值,那么一切都很有效.但是,由于我在过滤器表单上的用户输入上构建了我的过滤器,因此在某些情况下,用户希望按详细级别的值过滤(即,只有在用户单击"搜索"后才能知道要过滤的列).
我无法找到解决方案:"从奥地利购买百事可乐的所有客户". …
好的,我的情况是这样的:
我有一个名为Company的表,我希望在我在此表中添加的每个记录之后添加一个触发器,检查列Name是否以'LTD'结尾,然后在Name的末尾添加'LTD'.
我收到一条错误,说"')'附近的语法不正确.我该怎么做?
Create Trigger [Add_LTD] on Company
After Insert As
Update Company
Set Name = Name + ' LTD'
If Exists (Select Name
From Inserted
Where Name Not Like '% LTD')
Run Code Online (Sandbox Code Playgroud)