即时通讯是C#的新功能,但我找不到针对我的问题的明确响应。我的代码是:
“{% url ‘test:justatest’ id=8 %}”
它使用:
$res_string = $res_string."<tr><td>".$row["cid"]."</td><td>".$row["cname"]."</td><td>".$row["caddress"]."</td><td>".$row["cgstno"]."</td><td>".$row["ctel"]."</td><td class='edit' onclick=\"EditClient(\"$edit_query\");\">Edit</td><td>Delete</td></tr>";
我想通过以下方式自动创建它:
<td class='edit' onclick=\"EditClient(\"$edit_query\");\"
但是我有一个错误:
错误CS1579:因为“帖子”不包含“ GetEnumerator”(CS1579)(helloApp)的公共定义,因此foreach语句无法对“帖子”类型的变量进行操作
编辑:
我想使用公共类帖子(例如fe)中的项目生成myDict:
现在我正在做
myDict.Add("BTC",jsonResponse.BTC);
myDict.Add("LTC", jsonResponse.LTC);
myDict.Add("DASH", jsonResponse.DASH);
myDict.Add("ETH", jsonResponse.ETH);
我想做foreach:
using System;
using System.Collections;
namespace helloApp
{
public class Posts
{
public string BTC { get; set; }
public string DASH { get; set; }
public string ETH { get; set; }
public string LTC { get; set; }
}
}
自动获得与myDict.Add(“ BTC” ...等...)相同的结果
编辑:
根据回答,谢谢您的帮助:
您必须制作一个字典变量:
foreach(string x in jsonResponse){
Console.WriteLine(x);
}
然后将元素添加到myDict:
myDict.Add("BTC",jsonResponse.BTC);
myDict.Add("LTC", jsonResponse.LTC);
myDict.Add("DASH", jsonResponse.DASH);
myDict.Add("ETH", jsonResponse.ETH);
您可以使用它:
myDict.Add(string X,jsonResponse.X)
因为Microsoft教程使难度变得更大。
答案 0 :(得分:1)
您可以尝试通过GetProperties
方法使用反射来获取所有属性,然后将它们添加到字典中。
var myDict = new Dictionary<string, string>();
foreach (var prop in jsonResponse.GetType().GetProperties())
{
if (!myDict.ContainsKey(prop.Name))
myDict.Add(prop.Name, prop.GetValue(jsonResponse)?.ToString());
}
或者您可以使用linq ToDictionary
的简单方法。
var myDict1 = jsonResponse.GetType()
.GetProperties()
.ToDictionary(x => x.Name, x => x.GetValue(jsonResponse)?.ToString());
如果要获取值和键,则需要从字典中进行迭代器,因为foreach
实现了iterator pattern,该对象需要实现IEnumerable
接口,并且该集合具有对iterator的行为。
foreach (var item in myDict)
Console.WriteLine(item.Key + " "+ item.Value);