2014-10-06 3 views
0

선택한 사용자를 나타내는 문자열 목록에 있습니다.C# JSON - 조건에 따라 객체 직렬화

속성 중 하나가 선택되어있는 JSON을 직렬화하려고합니다. 사용자가 List에 있으면 true이고 그렇지 않은 경우에는 false입니다.

ViewBag.Json = JsonConvert.SerializeObject(new 
      { 
       Utilizadores = db.Utilizador.Select(u => new { Id = u.Id, Nome = u.Nome, Info = u.NumMecanografico, Selected = false }) 
      }); 

예 최종 결과 :

나는 이런 식으로 뭔가, 이매 사용자 1을 원하고이 목록에

지금 나는이 있습니다. 총 사용자 수는 4 명입니다.

Utilizadores = [Id:1, Nome: User1, Selected: true],[Id:2, Nome: User2, Selected: true],[Id:3, Nome: User3, Selected: false],[Id:4, Nome: User4, Selected: false] 

이와 비슷한 것입니다.

지금 당장이 조건을 어떻게 수행 할 수 있는지 보지 못했습니다. 누구든지 약간의 빛을 비추 수 있습니까?

+0

당신이 보여줄 수 "는 JSON 속성 Selected사실 때문에 사용자가가 목록에있는 경우, 선택된 사용자의 List있다"고 수단에 질문을 해석 Utilizador 클래스? 나는 약간의 혼란이있을 것이라고 생각한다. –

+0

당신이 알고 싶은 것이 있다면 그것이 어떤 선택된 속성도 갖고 있지 않다. 선택한 것은 JSON 용입니다. – Lokuzt

+0

여기에 누락 된 것은 사용자를 선택하게 만들 었는지에 대한 조건입니다. 이 정보는 어디에서 유래됩니까? 매개 변수를 요청 하시겠습니까? 데이터베이스에 저장된 부울? – Crono

답변

1

나는

IList<string> selectedUsers = ... //The list of selected usernames 
ViewBag.Json = JsonConvert.SerializeObject(new 
      { 
       Utilizadores = db.Utilizador.Select(u => new { Id = u.Id, Nome = u.Nome, Info = u.NumMecanografico, Selected = selectedUsers.Contains(u.Nome) }) 
      }); 
+0

성능을 위해 –

+0

에 대해 을 사용하는 것이 더 낫습니다. 내가 원하는 것 때문에 결국 false 대신 true를 적용합니다. 하지만 목록에있는 다른 사람을 거짓으로 설정하려면 어떻게해야합니까? – Lokuzt

+1

미안하지만 나는 완전히 잘못 대답했다고 생각합니다. 그냥 코드를 수정 –

1

을 입력하십시오. 선택기.

ViewBag.Json = JsonConvert.SerializeObject(new 
{ 
    Utilizadores = db.Utilizador.Where(u => u.Selected).Select(u => u...) 
});