<分区>
我正在学习 C#,我发现 LINQ 非常有趣。然而,令我感到困惑的是,我想不出使用 LINQ 会提供巨大帮助的场景,因为在代码中复制 LINQ 功能真的不那么难。
您有任何个人经验/建议可以分享吗?
谢谢!
<分区>
我正在学习 C#,我发现 LINQ 非常有趣。然而,令我感到困惑的是,我想不出使用 LINQ 会提供巨大帮助的场景,因为在代码中复制 LINQ 功能真的不那么难。
您有任何个人经验/建议可以分享吗?
谢谢!
最佳答案
我发现我几乎在任何时候都在使用 LINQ,而我以前会编写一个循环来填充容器。我使用 LINQ to SQL 作为我的 ORM,并在其他地方使用大量 LINQ。
这是我为 Active Directory 帮助器类编写的一个小片段,它可以确定特定用户是否属于特定组。请注意使用 Any() 方法迭代用户的授权组,直到找到一个具有匹配 SID 的授权组。比替代方案更简洁的代码。
private bool IsInGroup( GroupPrincipal group, UserPrincipal user )
{
if (group == null || group.Sid == null)
{
return false;
}
return user.GetAuthorizationGroups()
.Any( g => g.Sid != null && g.Sid.CompareTo( group.Sid ) == 0 );
}
备选方案:
private bool IsInGroup( GroupPrincipal group, UserPrincipal user )
{
if (group == null || group.Sid == null)
{
return false;
}
bool inGroup = false;
foreach (var g in user.GetAuthorizationGroups())
{
if ( g => g.Sid != null && g.Sid.CompareTo( group.Sid ) == 0 )
{
inGroup = true;
break;
}
}
return inGroup;
}
或
private bool IsInGroup( GroupPrincipal group, UserPrincipal user )
{
if (group == null || group.Sid == null)
{
return false;
}
foreach (var g in user.GetAuthorizationGroups())
{
if ( g => g.Sid != null && g.Sid.CompareTo( group.Sid ) == 0 )
{
return true;
}
}
return false;
}
这是一个针对存储库进行搜索、排序并将前 10 个匹配的业务对象转换为 View 特定模型的代码段(Distance
是匹配模型的唯一 ID 的 Levenshtein 编辑距离来自 uniqueID 参数)。
model.Results = this.Repository.FindGuestByUniqueID( uniqueID, withExpired )
.OrderBy( g => g.Distance )
.Take( 10 )
.ToList()
.Select( g => new GuestGridModel( g ) );
关于c# - 什么时候应该使用 LINQ for C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2186724/