Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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# 如何将列表中的Uri转换为列表?_C#_Asp.net_Linq_Entity Framework - Fatal编程技术网

C# 如何将列表中的Uri转换为列表?

C# 如何将列表中的Uri转换为列表?,c#,asp.net,linq,entity-framework,C#,Asp.net,Linq,Entity Framework,我首先使用ASP.NET Web API和代码,其中我有一个名为profile的模型,该模型应该保存这样的数据: 字符串引用XXX-12345 字符串名John 字符串LastName Doe 字符串电话+xxx XXXXXXXXX 字符串电子邮件john@doe.com 串链 我想这样做: List<Uri> ProfileUris = DBContext.Profiles.Select(p => new Uri(p.Link)).ToList() 上面的代码抛出了一个

我首先使用ASP.NET Web API和代码,其中我有一个名为profile的模型,该模型应该保存这样的数据:

字符串引用XXX-12345 字符串名John 字符串LastName Doe 字符串电话+xxx XXXXXXXXX 字符串电子邮件john@doe.com 串链 我想这样做:

List<Uri> ProfileUris = DBContext.Profiles.Select(p => new Uri(p.Link)).ToList()
上面的代码抛出了一个错误


您知道我如何在没有for循环的情况下进行转换吗。

实体框架无法将Uri创建转换为SQL代码。从数据库中选择“链接列”,然后使用一个可数调用将处理移动到客户端-这将允许您调用C代码,而无需尝试将其转换为SQL:

List<Uri> ProfileUris = DBContext.Profiles.Select(p => p.Link)
                                 .AsEnumerable()
                                 .Select(l => new Uri(l))
                                 .ToList();

什么错误?当然,另一种选择是DBContext.Profiles.AsEnumerable.Selectp=>new-Urip.Link.ToList;但按您的方式执行可能会更有效—一个选择使用Linq to Sql,一个选择使用Linq to Objects。@JeppeStigNielsen若您不在服务器端投影数据,EF将查询数据库表中的所有列,然后将结果集中的每一行映射到配置文件实体实例。这显然比不带任何映射返回单个列的效率要低:@Sergey:谢谢Sergey!您的代码就是导致我进行如下重构的答案:List ProfileUris=DBContext.Profiles.AsEnumerable.Selectl=>new Uril.ToList;Jeppe Stig Nielsen:我刚刚意识到……我的重构结果和你的答案一样。