{"type" : "Something",
"values" : [
{ "type": "Something else",
"Categories": {
"values": [ "Grocery" ]},
"Origin": {
"values": [
{
"Name": "Chicken",
"State": "Texas",
"Quantity": "200",
"Year" : "2017" }],
"Primaryprovider": "Farmer",
"Name": "EggsGrocery"
},
{
"type": "Something else",
"categories": {
"values": [ "Utensil" ]},
"Origin": {
"values": [
{
"Name": "Cutlery",
"State": "Alaska",
"Quantity": "109",
"Year" : "2015" }],
"Primaryprovider": "Welder",
"Name": "UtensilSpoon"
}]}
カテゴリに名前が一致する辞書があります。だから私はPrimaryProvidersを取得しようとすると、これを取得します。Enumerable + WhereSelectEnumerableIterator`2エラーとLINQ文を使用してJObjectの値を取得する
System.Linq.Enumerable+WhereSelectEnumerableIterator`2[Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken]
私が間違っていることを指摘してください。状態がテキサスでLINQ式の場合は、名前、州、および年のOrigin値をどのように取得できますか?私はLINQにあまり堪能ではありませんので、私は本当にそこでの短い説明に感謝します。私はそれのためにJTokenを使い始めました。それは悪い考えです。 助けてください。ありがとう!
foreach (var kvp in catDict)
{
string cat = kvp.Key;
List<string> Names = new List<string>();
Names.AddRange(kvp.Value);
for (int i = 0; i < Names.Count; i++)
{
//if the name contains the name of the category
if (Names[i].Contains(cat))
{
//get primaryprovider
string primaryprover = json["values"].Select(pk => pk.SelectToken("Primaryprovider")).ToString();
// get the Origin Name, State & year if the state is Texas
// foreach (var jent in json["values"])
//{
//if (jentity["Origin"]["State"] == "Texas")
//}
Console.WriteLine(primaryprovider);
}
'Enumerable + WhereSelectEnumerableIterator \' 2'は「エラー」ではありません。これは、 'Select()'の結果に対して 'ToString()'によって返される文字列です。 'ToString'があなたが得た型に対してオーバーライドされないとき、それは名前です。この場合、ネストされた型があります( 'WhereSelectEnumerableIterator'は' Enumerable'クラスのネストされたクラスです)。 2( '\' 2')の汎用引数も含まれています。これはあなたの質問に対する答えではありません。私はこれを指摘しているので、これらの謎の文字列を将来認識することができます。 – pinkfloydx33
JSONは検証されません。 [jsonlint.com](https://jsonlint.com/)で確認してください。 –