2011-09-28 115 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();