我最近升级到了VS 2010,正在玩LINQ to Dataset.我有一个强大的类型化的Authorization数据集,它位于ASP.NET WebApplication的HttpCache中.
所以我想知道实际上检查用户是否有权做某事的最快方法.如果有人感兴趣的话,这是我的数据模型和其他一些信息.
我检查了3种方法:
这些是每个函数1000次调用的结果:
1.Iteration:
2.Iteration:
3.Iteration:
平均:
为什么Join-version比where-syntax快得多,这使得它无用尽管作为LINQ新手它似乎是最清晰的.或者我在查询中遗漏了什么?
这是LINQ查询,我跳过数据库:
地点:
Public Function hasAccessDS_Where(ByVal accessRule As String) As Boolean
Dim userID As Guid = DirectCast(Membership.GetUser.ProviderUserKey, Guid)
Dim query = From accRule In Authorization.dsAuth.aspnet_AccessRule, _
roleAccRule In Authorization.dsAuth.aspnet_RoleAccessRule, _
role In Authorization.dsAuth.aspnet_Roles, _
userRole In Authorization.dsAuth.aspnet_UsersInRoles _
Where accRule.idAccessRule = roleAccRule.fiAccessRule …Run Code Online (Sandbox Code Playgroud) 我有一个Dictionary<string, string>和另一个List<string>.我想要实现的是一个linq查询,以获取字典中的所有项目,其中来自所述字典的任何值都在List<string>.
我发现这篇文章很有帮助,LINQ查询列表中的字典.并且能够编写以下linq表达式,但是我的结果实际上从未返回任何内容.
到目前为止我有什么.
Data是字典,PersonList是字符串列表.
var Persons = PersonList.Where(x => Data.ContainsKey(x))
.Select(z => new { key = z, value = Data[z] })
.ToList();
Run Code Online (Sandbox Code Playgroud)