私はC#とLinqについてよく知っており、助けてくれてありがとうございます。それを扱う人にとっては簡単なことです。私は連絡先情報を返すJsonオブジェクトを持っています。私はidsのリストも持っています。私はJSONオブジェクトにリストを比較する必要があると、リスト内の値は、JSONオブジェクトにuserclientcode
と一致するところはどこでも、私は(唯一の試合のために)、以下の情報を抽出する必要があります。LinqまたはC#を使ってJsonを解析する
clienttaxonomy (if not empty)
fullname (if not empty)
[0]contactdata (-> email if not null or empty)
[1]contactdata (-> address if not null or empty)
[2]contactdata (-> phone number if not null or empty)
最初のリスト
var fileContactIds = new List<string> { "5678765", "2135123", "12341234", "341234123", "12341234123", "2341234123", "341234123", "123412341", "13342354",
"12342341", "123412322", "163341234", "2345234115", "8967896", "75626234 };
JSONオブジェクトが返されると:
return JsonConvert.DeserializeObject<RelatedContacts>(json)?.list;
これはJSONオブジェクトである: [1]
[[JSONオブジェクト] [1]!]これでJSON文字列(エスケープ):
{
"type": "com.kurtosys.api.userprofile.domain.RelatedContactList",
"list": [{
"objectlistid": 5678765,
"objectlisttypeid": 4567876,
"objectlistname": "ALL.National",
"clienttaxonomyid": 765677,
"clienttaxonomy": "National Wholesaler",
"order": 1,
"contacts": [{
"personid": 7654345678,
"fullname": "Person Jallo",
"userid": 876567,
"userclientcode": "341234123",
"contactdetails": [{
"contactid": 8765567,
"contacttypeid": 4565,
"contactdata": "[email protected]"
}, {
"contactid": 876545678,
"contacttypeid": 4565,
"contactdata": "Baltimore,MD,21209,United States"
}, {
"contactid": 87654567,
"contacttypeid": 4584,
"contactdata": "410-413-2640"
}]
}]
}, {
"objectlistid": 765678,
"objectlisttypeid": 40400461,
"objectlistname": "RM.Internal",
"clienttaxonomyid": 7567898,
"clienttaxonomy": "Internal Regional Wholesaler",
"order": 2,
"contacts": [{
"personid": 56789876,
"fullname": "Jackson Man",
"userid": 876567,
"userclientcode": "1012275",
"contactdetails": [{
"contactid": 309598309,
"contacttypeid": 76546,
"contactdata": "[email protected]@site.com.com"
}, {
"contactid": 876567,
"contacttypeid": 4581,
"contactdata": "Baltimore,MD,21209,United States"
}, {
"contactid": 876567,
"contacttypeid": 2342,
"contactdata": "123-413-2604"
}]
}]
}, {
"objectlistid": 309571364,
"objectlisttypeid": 40400461,
"objectlistname": "RM.External",
"clienttaxonomyid": 309580710,
"clienttaxonomy": "External Regional Wholesaler",
"order": 3,
"contacts": [{
"personid": 302736188,
"fullname": "Phal Sumi",
"userid": 303826019,
"userclientcode": "163341234",
"contactdetails": [{
"contactid": 309598253,
"contacttypeid": 2342,
"contactdata": "[email protected]"
}, {
"contactid": 309611930,
"contacttypeid": 2342,
"contactdata": "Baltimore,MD,21209,United States"
}, {
"contactid": 34234132,
"contacttypeid": 3422,
"contactdata": "342-803-1793"
}]
}]
}]
}
どうすればよい 1]のLINQとラムダを使用して選択し、非直列化されたオブジェクトからリストのフルネーム、電子メール、アドレスなどに入れて? 2]最初のリストと比較して、唯一のuserclientcodeは==リストA.
内の数字は、私が試してみましたこれらのアイテム転送:
var query5 = relatedContact.Where(s => s.objectlistid == Convert.ToInt64(contacts.Select(t => t.id)))
var selected = relatedContact.Where(p => p.contacts
.Any(a => fileContactIds.Contains(p.contacts))
.ToList();
var query2 = relatedContact.Where(s => s.objectlistid == Convert.ToInt64(contacts.Select(t => t.id)))
.Select(s => new
{
Description = s.clienttaxonomy,
Fullname = s.contacts[0].fullname,
Email = s.contacts[0].contactdetails[0].contactdata,
Address = s.contacts[0].contactdetails[1].contactdata,
PhoneNumber = s.contacts[0].contactdetails[2].contactdata
});
をしかし、本当に私はそれをやっているかわからないが思われる。必要なセクションを取得する方法に関する提案はありますか?私は理由の一部がcontactdataがリストであると思う。 おかげで、すべての
Newtonsoft.Jsonライブラリはjsonをオブジェクトに逆シリアル化するのに役立ちます。NuGetから読み込むことができます – Fabio
[C#でJSONをどのように解析できますか?](http://stackoverflow.com/questions/6620165/how- can-i-parse-json-with-c) – SeM
[linqとlambdaで2つのリストを比較すると、1つが文字列で、もう1つはlongです](http://stackoverflow.com/questions/40400405/compare-two-lists) -with-linq-and-lambda-where-one-is-string-and-other-long) –