2011-09-28 69 views
1

我想將數據導入到新數據庫,但舊數據庫中的某些列爲空。LinQ查詢在哪裏條件

在我的一個方法中,我正在使用下面的查詢來獲取記錄,就像我說已經存在的列中有一些記錄爲空值的行。

Guid nameGuid= new guid('CCECE54B-EE14-4463-8A0B-02C72679334A') 

MySubQuery = from a in MainQuery 
       where a.Table1.Id.Equals(nameGuid) 
     Select a; 

我要檢查a.Table1.Id值,如果它等於空,那麼我還是想行,但是,忽略where條件。

在Linq Query或任何其他方法中對我的任務使用Terinary運算符的任何建議。

回答

7

聽起來像是你想:

MySubQuery = from a in MainQuery 
      where a.TableId.Id Is Nothing OrElse a.Table1.Id.Equals(nameGuid) 

這是假設我的VB是正確的...在C#我只是寫:

var query = from a in mainQuery 
      where a.TableId.Id == null || a.TableId.Id == nameGuid 
      select a; 

或直接使用擴展方法:

var query = mainQuery.Where(a => a.TableId.Id == null || 
           a.TableId.Id == nameGuid); 
1

如何:

MySubQuery = from a in MainQuery 
      where a.Table1.Id == null || a.Table1.Id.Equals(nameGuid) 
      select a; 

或者我錯過了什麼?

編輯:

我缺少的東西是什麼飛碟雙向先生髮現。這是VB。那麼,我會讓它作爲一個C#示例。

0
var datarows = (from row in dt.AsEnumerable() 
          where row.Field<Guid>("Id") == new 
       Guid(ddlCode.SelectedValue.ToString()) 
          select row); 

 DataTable newDt=datarows.CopyToDataTable(); 
    var sampleName=newDt.Rows[0]["SampleName"].ToString();