我有以下代码来获取共享驱动器的文件夹权限:
DirectorySecurity dSecurity = Directory.GetAccessControl(directory);
foreach (FileSystemAccessRule rule in dSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
{
Console.WriteLine("Account:{0} ({1}", rule.IdentityReference.Value,
rule.FileSystemRights.ToString() + ")");
}
我在两个不同的共享驱动器上运行它们,这些驱动器应该是相同的,以便比较结果,但输出文件乱序且难以比较。
如何按字母顺序对结果进行排序?
答案 0 :(得分:1)
您可以使用LINQ' IdentityReference.Value
并按var orderedResults = dSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount))
.Cast<FileSystemAccessRule>()
.OrderBy(rule => rule.IdentityReference.Value);
订购,因为这似乎是您在屏幕上显示的内容。但首先你需要投射集合。
foreach
然后在orderedResults
循环中循环foreach (FileSystemAccessRule rule in orderedResults)
:
private function check_destination_delivered($request,$id,$order)
{
if ($request->get('status') == 'destination_delivered')
{
$this->destination_verification($request);
DB::beginTransaction();
try
{
$this->calculate_credit($id,$order);
$this->calculate_customer_gift_credit($id,$order);
DB::commit();
}
catch (\Exception $e)
{
DB::rollback();
return $this->respondUnprocessable(1180,'error', $e);
}
}
}
答案 1 :(得分:0)
通过Linq将foreach的输出转换为列表,或者添加到列表中,然后按降序排序。我实际上使用下面的内容返回在共享中找到的DIR的有序列表。
ObjRef.ToList()。OrderByDescending(x =&gt; x.Name).ToList()