选择使用LINQ和EF过滤

时间:2015-07-06 10:14:33

标签: c# linq entity-framework

我有一个这样的类,它是从带有EF的数据库派生的(我的数据库包含这个类的所有记录):

public class Products
{
    public string color { get; set; }
    public string size { get; set; }
    public string comment { get; set; }
    public string owner { get; set; }
    public string buyer { get; set; }
    public Nullable<DateTime> After { get; set; }
    public Nullable<DateTime> Before { get; set; }
}

现在,在我的Web表单上,用户可以在自由文本框中指定每个属性,并且我想基于这些属性在数据库实体中进行搜索。用户可以决定填写所有属性,也可以只填写其中两个。如何在EF中创建.select?

欢迎任何帮助!

BR, 罗纳德

3 个答案:

答案 0 :(得分:0)

boolean isZoomEnable= true;

public void setIsZoomEnable(boolean value){
    isZoomEnable = value;
}
@Override
public boolean dispatchTouchEvent(final MotionEvent ev) {
    if(!isZoomEnable) return false;
    // single touch
    if (ev.getPointerCount() == 1) {
        processSingleTouchEvent(ev);
    }

    // // double touch
    if (ev.getPointerCount() == 2) {
        processDoubleTouchEvent(ev);
    }

    // redraw
    getRootView().invalidate();
    invalidate();

    return true;
}

答案 1 :(得分:0)

使用.Contains方法:

private bool IsMatch(string value, string searchCriteria)
{
   if(searchCriteria == null || value == null) return true;   
   return value.ToUpper().Contains(searchCriteria.ToUpper());
}

public Products FindProducts(string color, string size, string comment, string owner, string buyer, datetime? after, datetime? before)    
{
    using(MyDbContext cont = new MyDbContext())
    {
        return cont.Products.Where((p) =>
        {
           return IsMatch(p. color, color) && IsMatch(p.size, size) && 
           IsMatch(p.comment, comment) && IsMatch(p.owner, owner) && 
           IsMatch(p.buter, buyer);  // add your logic for dates here
        });
    }   
}

答案 2 :(得分:0)

Products.GetAllProducts().Where(x=>(string.IsNullOrEmpty(txtColor.Text) || x.color ==txtColor.Text) && 
                                             (string.IsNullOrEmpty(txtSize) || x.size ==  txtSize.Text)  &&
                                             --- Same as other fields
                                            ).AsEnumerable();