質問

質問:私はここから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()によって異なります)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top