LinQ查询条件

时间:2011-09-28 11:11:50

标签: c# .net 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值,如果它等于null,那么我仍然想要该行但忽略where条件。

在Linq查询中使用三元运算符或任何其他方法来执行任务的任何建议。

3 个答案:

答案 0 :(得分: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 :(得分:1)

怎么样:

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

或者我错过了什么?

修改

我想念的是Skeet先生发现的事情。这是VB。好吧,我会把它作为C#样本留下来。

答案 2 :(得分: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();