LinQ查询Where条件

本文关键字:条件 Where 查询 LinQ | 更新日期: 2023-09-27 18:10:00

我正试图将数据导入到一个新数据库中,但旧数据库中的一些列为空。

在我的一个方法中,我使用下面的查询来获取记录,就像我已经说过的那样,行中有一列的某些记录的值为null。

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查询中使用三元运算符的任何建议,或者我的任务的任何其他方法。

LinQ查询Where条件

听起来像你想要的:

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);

怎么样:

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

还是我错过了什么?

编辑:

我缺少的是斯基特先生发现的东西。这是VB。好吧,我将把它作为C#示例继续使用。

 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();