2014-10-06 57 views
0

我有代表我所選用戶的字符串列表。C#JSON - 根據條件序列化對象

我想序列化其中一個屬性被選中的JSON。如果用戶在列表中,則爲真;如果用戶不在,則爲假。

現在我有這樣的:

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

例最終結果:

我想是這樣的,IMAGINA用戶1和2是在列表中。我總共有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

可以告訴你Utilizador課程?我認爲這有很多混淆 – 2014-10-06 13:56:32

+0

它沒有任何選定的屬性,如果這是你想知道的。所選內容僅適用於JSON。 – Lokuzt 2014-10-06 14:04:28

+0

這裏錯過了什麼是您選擇或不選擇用戶的條件。這些信息來自哪裏?請求參數?存儲在數據庫中的布爾值? – Crono 2014-10-06 14:12:16

回答

1

我解釋的方式你的問題說:「你有選擇的用戶的List,所以JSON屬性Selected是真如果用戶在列表中

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

更好地使用HashSet 表現 – 2014-10-06 13:57:56

+0

它有點作品。我把真正的而不是假的最終原因這就是我想要的。但是,如何將列表中沒有的另一個設置爲false? – Lokuzt 2014-10-06 14:01:29

+1

對不起,我認爲我完全錯了。只是修復了代碼 – 2014-10-06 15:13:48

1

只需添加一個其中選擇器。

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