LINQのキャスト式を交換する方法は?
質問
質問:私はここから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()
によって異なります)。
所属していません StackOverflow