C# 即使为空,linq也会返回对象

C# 即使为空,linq也会返回对象,c#,linq-to-sql,C#,Linq To Sql,我有一个如下的查询: var TheQuery = (from t in MyDC.Table where.... select new MyModel() { Property1 = (int?)... ?? 0 } var TheQuery = from t in MyDC.Table wh

我有一个如下的查询:

var TheQuery = (from t in MyDC.Table
                where....
                select new MyModel()
                {
                    Property1 = (int?)... ?? 0
                }
var TheQuery =  from t in MyDC.Table
                where....
                select new MyModel()
                {
                    Property1 = (int?)... ?? 0
                }

var after = TheQuery.Any() ? 
            TheQuery : 
            Enumerable.Range(0, 1).Select(k => new MyModel() { Property1 = 0 });
有时,查询中的
where
子句不返回执行
select
的数据。发生这种情况时,
MyModel
为空。我希望通过
??0
对于每个属性,查询仍将返回
Property1
设置为0的对象


如何重写它,以便在没有数据填充MyModel时,MyModel不会返回空值?

如果没有可选择的内容,则不会创建MyModel。查询将是一个空IEnumerable

如果您得到一个空对象列表,我不确定会发生什么。我不确定这怎么可能

您可以检查您的查询是否有如下结果:

var TheQuery = (from t in MyDC.Table
                where....
                select new MyModel()
                {
                    Property1 = (int?)... ?? 0
                }
var TheQuery =  from t in MyDC.Table
                where....
                select new MyModel()
                {
                    Property1 = (int?)... ?? 0
                }

var after = TheQuery.Any() ? 
            TheQuery : 
            Enumerable.Range(0, 1).Select(k => new MyModel() { Property1 = 0 });

你不能核对一下计数吗。例如query.ToList().count不要这样做,请使用.Any(),这样它就不必实际计算整个列表。