我无法使用匿名类型的linq表达式中的字典中使用TryGetValue()
。
Dictionary<string, string> dict = new Dictionary<string, string>()
{
{"1", "one"},
{"2", "two"},
{"3", "three"}
};
public string getValueByKey(string value)
{
string sColumnType = "";
dict.TryGetValue(value, out sColumnType);
return sColumnType;
}
[WebMethod]
public string getData(string name)
{
var result = (from z in myObject
where z.name == name
select new
{
a = z.A,
b = z.B,
c=getValueByKey(z.C) //fails there
}).ToList();
return new JavaScriptSerializer().Serialize(result);
}
请告诉我如何通过字典中的键获得价值?
答案 0 :(得分:3)
问题很可能是它不知道如何将对getValueByKey的调用转换为存储库的表达式 - 因为它不能。首先使用ToList()实现查询,以便它现在执行LINQ to Objects,然后选择匿名类型。
[WebMethod]
public string getData(string name)
{
var result = myObject.Where( z => z.name == name )
.ToList()
.Select( k =>
new
{
a = k.A,
b = k.B,
c = getValueByKey(k.C)
})
.ToList();
return new JavaScriptSerializer().Serialize(result);
}