gpt4 book ai didi

c# - 如何替换 Linq Cast 表达式?

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:40 26 4
gpt4 key购买 nike

问题:我从这里获得了一些 pgp 加密代码: http://blogs.microsoft.co.il/blogs/kim/archive/2009/01/23/pgp-zip-encrypted-files-with-c.aspx

它有以下方法,使用一些 LINQ。我仍在使用 .NET 2.0,无法切换到更高版本,但是...

如何用普通代码替换这个表达式?我不太了解 Linq,我猜它会做一些排序?

 private PgpSecretKey GetFirstSecretKey(PgpSecretKeyRingBundle secretKeyRingBundle)
{
foreach (PgpSecretKeyRing kRing in secretKeyRingBundle.GetKeyRings())
{
PgpSecretKey key = kRing.GetSecretKeys()
.Cast<PgpSecretKey>()
.Where(k => k.IsSigningKey)
.FirstOrDefault();
if (key != null)
return key;
}
return null;
}

最佳答案

类似于:

foreach (PgpSecretKeyRing kRing in secretKeyRingBundle.GetKeyRings())
{
foreach (PgpSecretKey key in kRing.GetSecretKeys())
{
if (key.IsSigningKey)
{
return key;
}
}
}
return null;

foreach 隐式 执行到目标类型的转换。诚然,原始的 LINQ 会更愉快地写成:

return (from keyring in secretKeyRingBundle.GetKeyRings()
from PgpSecretKey key in keyring.GetSecretKeys()
where key.IsSigningKey)
.FirstOrDefault();

(您可能也需要使第一个 from 子句成为强类型;这取决于声明要返回的 GetKeyRings()。 )

关于c# - 如何替换 Linq Cast 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4023093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com