私はList<string>
を持ち、これらの文字列のいくつかは数値です。このサブセットをList<int>
に抽出します。LINQを使用して文字列のリストからintを抽出する
私はこれを非常に冗長な方法で行っています - 以下のように - しかし、私は、これを構造化するための、より洗練されたLINQの方法が必要であると感じています。何か案は?
List<string> myStrs = someListFromSomewhere;
List<int> myInts = new List<int>();
foreach (string myStr in myStrs)
{
int outInt;
if (int.TryParse(myStr, out outInt))
{
myInts.Add(outInt);
}
}
もちろん、私ははこれに対する解決策を必要としない - それは私のLINQの教育のために主にです。
私のために別の機会には、「私はTryParseがintを返してほしい?」状態に(私は知っている、遺産...) –
確かに効率的ではありませんが、あなたは 'var myInts = myStrs.Where(s => int.TryParse(s、out outInt))を行うことができます。選択(s => int.Parseあなたがすでに定義されていれば、これは、それぞれの文字列で 'TryParse' *と* Parseを呼び出しますが、私は実際にそれを提案しません。 – rejj
この質問は興味深いかもしれません:[投射を行うLINQクエリ、投射が例外を引き起こすケースをスキップする] http://stackoverflow.com/questions/7188623/linq-query-to-perform-a-projection-skipping-cases-where-the-projection-would-ca)例としてあなたのケースを使用します。 –