樣品輸入:C#的LINQ替代的lodash省略功能
// remove sensitive data
var user = db.Users.Where(x => x.Id == '123').ToList()
.Omit("PasswordHash", "PasswordSalt", "SecretDataAsInteger");
輸出:
{
FirstName: "...",
LastName: "...",
PasswordHash: "", // default value instead of real value
PasswordSalt: "",
SeretDataAsInteger: 0
}
類似: https://lodash.com/docs/4.16.4#omit
首:
- 我喜歡的解決方案w^ithout選擇一個新的對象,並設置每個屬性除了我想省略即
var user = ..Users.Select(x => new User {/* here I set each property */})
,因爲這會導致更新所有參考的,萬一我已經更新了User
模特屬性後
- 傳遞對象中的omit函數而不是屬性名稱作爲字符串也是可接受的
什麼這個問題到底是什麼?如何實現'省略'方法? – Codor
@JonSkeet我不認爲omit方法會修改任何東西,我認爲它基本上是「給我所有沒有這些指定屬性的對象」,這對排除密碼字段或我認爲的敏感數據很有用。 – DavidG
@DavidG:就我能說的而言,這不是關於*對象*,而是*屬性*的問題,所以,它仍然可以作爲與「選擇」等價的方式來完成,但是這就是比'Where' ... –