2017-06-30 22 views
0

私はJArrayよりLINQを使用して、特定の条件に基づいて項目を除外し、結果を別のJArrayにしたいと考えています。IEnumerable <JToken>をJArrayに変換する方法

JArray arrSameClass = (JArray) arrPupilEmailDetails.Where(joSameClass => joSameClass["uClassId"].ToString() == gidClassId.ToString()); 

しかし、これは私にキャスト例外('unable to cast from IEnumerable<JToken> to JArray')を与えています。私もJArray.Parse()を試しました。どんな助け?

+0

「どこで(...)。ToArray() '? –

+0

@LeiYang C#ArrayまたはJArrayに変換するかどうかはわかりません。 – izengod

+0

'JArray'とは何ですか? –

答えて

2

あなたはJArray(Object) constructorを使用し、あなたのIEnumerable<JToken>し、列挙が評価され、JArray構築するために使用される、それを渡すことができます:

var query = arrPupilEmailDetails.Where(joSameClass => joSameClass["uClassId"].ToString() == gidClassId.ToString()); 
var arrSameClass = new JArray(query); 

サンプルfiddleを。

+0

パーフェクト!私は1つの質問がある、それはコンストラクタのパラメータとしてIEnumerableを渡すための良い方法ですか?私はパフォーマンスの観点から言います。 – izengod

+1

@izengod - ある時点で、 'JArray'コンストラクタが呼び出される必要があり、アイテムが追加される必要があります。これはちょうどそれを行うので、それは一見したところではない。それを超えてhttps://ericlippert.com/2012/12/17/performance-rant/ – dbc

+0

を参照してください。このソリューションで問題が発生するのは、配列がより大きなオブジェクトの子である場合、新しい 'JArray'を作成すると'パス情報。 – MotKohn

関連する問題