Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
与';第一';LINQ到EF的操作_Linq_Linq To Entities - Fatal编程技术网

与';第一';LINQ到EF的操作

与';第一';LINQ到EF的操作,linq,linq-to-entities,Linq,Linq To Entities,我试图获取数据库中具有给定“UserGuid”的第一项,但“first”扩展方法引发以下异常:System.invalidoOperationException:序列不包含任何元素 以下是一些有效和无效的示例: // Works var FoundUser1 = MyEntities.Users.First(); // Works var FoundUser3 = MyEntities.Users.ToList().First(r => r.UserGuid == SampleUserG

我试图获取数据库中具有给定“UserGuid”的第一项,但“first”扩展方法引发以下异常:
System.invalidoOperationException:序列不包含任何元素

以下是一些有效和无效的示例:

// Works
var FoundUser1 = MyEntities.Users.First();

// Works
var FoundUser3 = MyEntities.Users.ToList().First(r => r.UserGuid == SampleUserGuid);

// Throws System.InvalidOperationException: Sequence contains no elements.
var FoundUser2 = MyEntities.Users.First(r => r.UserGuid == SampleUserGuid);
有人有什么想法吗

编辑

更奇怪的代码示例:

// UserList1 is empty
var Query1 = from x in MyEntities.Users
             where x.UserGuid == criteria.Value
             select x;
var UserList1 = Query1.ToList();


// UserList2 has 3 users, including one with a 
// matching guid value.
var Query2 = from x in MyEntities.Users
             select x;
var UserList2 = Query2.ToList();  
var Query22 = from x in Query2
              where x.UserGuid == criteria.Value
              select x;
var UserList22 = Query22.ToList();

// Works
User FoundUser = null;
foreach (var ThisUser in MyEntities.Users)
{
   if (ThisUser.UserGuid == criteria.Value)
      FoundUser = ThisUser;
}

什么是异常,是“空集”异常还是类似的异常

试一试

而不是

First()

看看会发生什么。如果没有可用记录,First()将引发异常。如果没有可用记录,FirstOrDefault()将为您提供一个空用户对象。

什么是异常,是“空集”异常还是类似的异常

试一试

而不是

First()
看看会发生什么。如果没有可用记录,First()将引发异常。如果没有可用的记录,FirstOrDefault()将为您提供一个空的用户对象。

在这段代码中:

// UserList1 is empty
var Query1 = from x in mgr.ObjectContext.Users
             where x.UserGuid == criteria.Value
             select x;
var UserList1 = Query1.ToList();
如果调试,criteria.value的值是多少?打印它?

在这段代码中:

// UserList1 is empty
var Query1 = from x in mgr.ObjectContext.Users
             where x.UserGuid == criteria.Value
             select x;
var UserList1 = Query1.ToList();

如果调试,criteria.value的值是多少?打印它?

尝试比较它们的字符串值,如中所示

x.UserGuid.ToString() == criteria.Value.ToString()

互联网上还有其他一些例子,说明人们在直接比较guid时遇到了困难。这里有一个:

尝试比较它们的字符串值,如中所示

x.UserGuid.ToString() == criteria.Value.ToString()

互联网上还有其他一些例子,说明人们在直接比较guid时遇到了困难。这里有一个:

问题在于SQLite处理GUID类型。如果你设定

BinaryGuids=True

然后,它们被保存为16字节二进制文件,不能与基于字符串的GUID“匹配”。您还可以将其设置为false,并将它们作为字符串匹配,但您需要注意alpha字符的大小写。

事实证明,问题在于SQLite处理GUID类型。如果你设定

BinaryGuids=True

然后,它们被保存为16字节二进制文件,不能与基于字符串的GUID“匹配”。您也可以将其设置为false,它们作为字符串匹配,但您需要注意字母字符的大小写。

set是空的,但问题是,当存在有效数据时,set为什么为空(如所有“工作”示例所示)。“set”是空的,但当存在有效数据时,set为什么为空(如所有“工作”示例所示)标准一是:{e7bf9773-8231-44af-8d53-e624f0433943}我的示例数据列表中的3(显示在用户列表2中)是:{7ab8196e-f0bd-4db3-b6b4-3513c18b7c7f}{1dd40287-35a4-42cd-a380-c458c8ca7e62}{e7bf9773-8231-44af-8d53-E624F03943}UserGuid和Value的类型是什么?它们都是字符串吗?这两种类型都是“Guid”,我用“where x.UserGuid.Equals(criteria.Value)”尝试了一下,但没有任何运气。标准之一是:{e7bf9773-8231-44af-8d53-e624f0433943}我的示例数据列表中的3(显示在UserList2中)是:{7ab8196e-f0bd-4db3-b6b4-3513c18b7c7f}{1dd40287-35a4-42cd-a380-c458c8ca7e62}{e7bf9773-8231-44af-8d53-e624f0433943}UserGuid和Value的类型是什么?它们都是字符串吗?这两种类型都是“Guid”,我用“where x.UserGuid.Equals(criteria.Value)”尝试了它,但没有任何运气。与ToString()比较无论BinaryGuids设置如何,都应始终有效。与ToString()相比,无论BinaryGuids设置如何,都应始终有效。