2016-08-13 64 views
0

我有一个数据表,具有两个柱(源,目的地),我想从它与条件 选择我有两个过滤器(源,目的地)从数据表中具有多个条件选择

如果soruce不为空请从它那里像soruce
如果目的地不在空从中选择其中类似的目的地 如果两者都没有空从中选择其中相似的源和目标

这是我的代码

if (model.source != null&&model.destination == null) 
{ 
    var result = _filterFly.Select("source like '" + model.source + "%'"); 

    if (result.Any()) _filterFly = result.CopyToDataTable(); else _filterFly.Clear(); 
} 

if (model.source==null&&model.destination != null) 
{ 
    var result = _filterFly.Select("destination like '" + model.destination + "%'"); 

    if (result.Any()) _filterFly = result.CopyToDataTable(); else _filterFly.Clear(); 
} 

if (model.source!=null&&model.destination != null) 
{ 
    var result = _filterFly.Select("source like '" + model.source + "%'"); 

    if (result.Any()) _filterFly = result.CopyToDataTable(); else _filterFly.Clear(); 

    result = _filterFly.Select("destination like '" + model.destination + "%'"); 

    if (result.Any()) _filterFly = result.CopyToDataTable(); else _filterFly.Clear(); 


} 

我的问题是,这种情况下的方式是什么? ,因为它有可能在时间后添加任何过滤器 感谢您的帮助

回答

0

好的,这是您的明确代码。你可以用这个趋势

string query =""; 
if (model.source != null) 
    query +="source like '" + model.source + "%'"; 

if (model.destination != null) 
{ 
    if(query!=string.Empty) 
     query+=" and "; 
    query +="destination like '" + model.destination + "%'"; 
} 
if(query!=string.Empty) 
{ 
    var result=_filterFly.Select(query); 
    if (result.Any()) 
     _filterFly = result.CopyToDataTable(); 
    else 
     _filterFly.Clear(); 
} 

所以基本上继续,你可以添加3号线与新的参数

if (model.newparam!= null) 
{ 
    if(query!=string.Empty) 
     query+=" and "; 
    query +="newparam like '" + model.newparam + "%'"; 
} 
+0

,非常感谢对你的想法和帮助 –