1

質問:ここからpgp暗号化のコードがあります:http: //blogs.microsoft.co.il/blogs/kim/archive/2009/01/23/pgp-zip-encrypted-files-with-c.aspx

いくつかのLINQを使用して、以下の方法があります。私はまだ.NET2.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;
        }
4

1 に答える 1

5

何かのようなもの:

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(); 

(最初の句も強く型付けする必要があるかもしれません。それは何が返されるかによって異なります。)fromGetKeyRings()

于 2010-10-26T11:26:20.330 に答える