2016-08-13 88 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

,非常感謝對你的想法和幫助 –