我正在尝试将数据导入新数据库,但旧数据库中的某些列为空。
在我的一个方法中,我使用下面的查询来获取记录,就像我说的那样,行中有一列对某些记录具有空值。
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查询中使用三元运算符或任何其他方法来执行任务的任何建议。
答案 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();