Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我会得到一个“a”;序列不包含匹配元素“;使用时出错。任何_C#_Sql_Linq - Fatal编程技术网

C# 为什么我会得到一个“a”;序列不包含匹配元素“;使用时出错。任何

C# 为什么我会得到一个“a”;序列不包含匹配元素“;使用时出错。任何,c#,sql,linq,C#,Sql,Linq,我有一个.Any()Linq方法: db.MyTable.Any(x => x.Year == MyObj.Year && x.Quarter == MyObj.Quarter && x.Week == MyObj.Week) 这将返回错误: System.InvalidOperationException occurred HResult=0x80131509 Message=Sequence contains no matching elem

我有一个.Any()Linq方法:

db.MyTable.Any(x => x.Year == MyObj.Year && x.Quarter == MyObj.Quarter && x.Week == MyObj.Week)
这将返回错误:

 System.InvalidOperationException occurred
  HResult=0x80131509
  Message=Sequence contains no matching element
  Source=EntityFramework
但是,MSDN文档声明.Any方法返回“如果源序列包含任何元素,则返回true;否则返回false。”


为什么这个方法会抛出异常而不是返回False?

很难看出,在您的示例中,但您可能必须检查“MyTable”和MyTable.Year的数据类型中是否有空值,MyTable.Quarter和MyTable.Week与MyObj中的sames匹配…

使用这段小代码,很难看出原因是什么。这当然不在代码的这一部分中

在执行函数之前,请尝试执行一些调试、使用调试器检查所有值或编写一些调试语句:

// Check myObj
MyObjectType myObj = ...         // instead of var, so you are certain you have the right type
Debug.Assert(myObj != null);

// only if Year, Quarter, Week are classes:
Debug.Assert(myObj.Year != null);   
Debug.Assert(myObj.Quarter != null);
Debug.Assert(myObj.Week != null);

// check your db:
Debug.Assert(db != null);
Debug.Assert(db.MyTable != null);
int count1 = db.MyTable.Count();
int count2 = db.MyTable
    .Where(x => x.Year == MyObj.Year 
        && x.Quarter == MyObj.Quarter
        && x.Week == MyObj.Week)
    .Count();
bool hasAny = db.MyTable
    .Where(x => x.Year == MyObj.Year 
        && x.Quarter == MyObj.Quarter
        && x.Week == MyObj.Week)
    .Any();

// if all this works, your statement should also work
hasAny = db.MyTable
    .Any(x => x.Year == MyObj.Year 
        && x.Quarter == MyObj.Quarter
        && x.Week == MyObj.Week);

这是因为
db.MyTable
是空的。文档中说,对于
Any
的“无参数”版本;对于使用谓词的版本,它表示了不同的内容。@LasseVågsætherKarlsen如果表为空,则会抛出此异常,但是我的表不是空的。@KennethK@JoelCoehoorn不,它不匹配。数据类型确实匹配(该模型首先使用db中的代码构建)。数据库中查询的字段没有任何空值。