2017-08-16 12 views
0

これは私のコードです。mvc C#で2つのJObjectの結合クエリを書く方法は?

var students={data:[{"name":"abc","id":"101","dept_id":"213"},{"name":"abc","id":"101","dept_id":"212"}]}; 
var departments={data:[{"name":"it","id":"212"},{"name":"csc","id":"213"}]} 

私はstudentsdepartmentsのような2 JObjectsを持っています。学生の配列にdept_idのキー値が含まれており、それにはキーの値がdepartmentsから追加されます。 私はのような出力を取得したい: -

var students={data:[{"name":"abc","id":"101","dept_id":"213","dept_name":"csc"},{"name":"abc","id":"101","dept_id":"212","dept_name":"it"}]}; 

答えて

0

1:jオブジェクトの代わりに使用JArray:

var students = JArray.Parse("[{ \"name\":\"abc\",\"id\":\"101\",\"dept_id\":\"213\"},{ \"name\":\"abc\",\"id\":\"101\",\"dept_id\":\"212\"}]"); 
var departments = JArray.Parse("[{ \"name\":\"it\",\"id\":\"212\"},{ \"name\":\"csc\",\"id\":\"213\"}]"); 

2.参加:

// Method syntax 
var joined = students.Join(departments, s => s["dept_id"].Value<string>(), 
             d => d["id"].Value<string>(), 
             (s, d) => new { name = s["name"].Value<string>(), 
                 id = s["id"].Value<string>(), 
                 dept_id = s["dept_id"].Value<string>(), 
                 dept_name = d["dept_name"].Value<string>() }); 

編集:をケースであなたは学科ごとに複数の学生がいます。または複数の部署。学生1人当たり(またはその両方)、.GroupJoinの代わりに.Joinを使用してください。

+0

生徒には20キーが存在するとします。 –

+0

@sivakishore編集を参照してください。これは任意の数の生徒に有効ですが、多対多の関係にある場合はJoinの代わりにGroupJoinを使用してください。 –

関連する問題