【发布时间】:2018-02-04 09:17:30
【问题描述】:
我有一个结构为的 Jtoken。下面的结构比下面有更多的属性,但我只能使用下面的那些
{{ "PersonId": 1234, "State": "Florida", "Gender": "Male", "Married ": 1, "SalaryUnderHundredDollar ": 1, }}
我创建了一个类 Person
public class Person
{
public int PersonId {get;set;}
public string State {get;set;}
public string Gender {get;set;}
public bool Married {get; set}
public bool SalaryUnderHundredDollar {get;set}
}
我将上述 Jtoken 转换为字典:
var dict = jtoken.First.ToObject<Dictionary<string, object>>().ToDictionary(x => x.Key, x => x.Value);
这将给出 Person 的所有属性,但我只想要上面的那些。现在我必须转换
Dictionary<string,object> to Dictionary<string,class>
我正在做以下事情:
var dict2= dict.Where(x => fieldsRequired.Contains(x.Key)).ToDictionary(x => x.Key, x => (Person)x.Value);
fieldsRequired 是我需要的字符串字段列表,因为在 Jtoken 中有许多字段。
但是这种转换不起作用。
有什么帮助吗?
【问题讨论】:
-
“不工作”不是错误报告。请更具体。你得到什么结果?你得到什么错误?
-
无法将布尔类型转换为 Person 类。这是错误
-
尝试以下操作:Dictionary
dict2 = dict.Where(x => fieldsRequired.Contains(x.Key)).ToDictionary(x => x.Key, y => y。值); -
@jdweng 顺便说一句,我将无法将我的 dict 的值转换为 Person 类型。
-
你为什么不能?
标签: c# linq dictionary lambda