c# - foreach 循环中的转换问题

标签 c# asp.net

我在 foreach 循环中进行 CAST 时遇到问题。

我有以下由基本对象组成的代码:

public class DBFieldMap
{
    public String fieldName { get; set; }
    public String fieldValue { get; set; }
    public DBFieldMap() { }
    public DBFieldMap(String fname, String fvalue)
    {
        fieldName = fname;
        fieldValue = fvalue;
    }
}

使用上述对象的字典

public class MappedSQLFields : Dictionary<String, DBFieldMap>
{
    public MappedSQLFields() 
    {
        this.Add("firstname", new DBFieldMap());
        this.Add("lastname", new DBFieldMap());
        this.Add("email", new DBFieldMap());
        etc...

    }
}

具有基于上述对象的属性的另一个对象

public class Audience : IEnumerable
{
...
        public MappedSQLFields audienceSQLMap
        {
            get;
            set;
        }
}

我希望能够循环访问 AudienceSQLMap 属性并提取 DBFieldMap Dictionary 对象的 fieldName 和 fieldValue 属性的值,但我在“foreach”行收到以下错误。我已经尝试了各种显式转换,但似乎仍然无法使 CAST 正常工作。

foreach (MappedSQLFields item in audience.audienceSQLMap)
{
    //Do something with item.fieldName and item.fieldValue
}

Error 49 Cannot convert type 'System.Collections.Generic.KeyValuePair' to 'MappedSQLFields'

任何帮助将不胜感激。谢谢。

传奇仍在继续

好的,现在由于下面每个人的帮助,上面的内容可以正常工作,现在我在将对象的 JSON 等效项转换回原始对象时遇到问题。我收到了与最初收到的相同的错误,但尝试了我能想到的各种 CAST 语句,但它仍然让我感到悲伤。我显然遗漏了有关整个主题的一些内容。

这工作正常:

var json = new JavaScriptSerializer().Serialize(audienceSQLMap);

此行错误:

this.audienceSQLMap = (MappedSQLFields)new JavaScriptSerializer().Deserialize(json,typeof(KeyValuePair<String, DBFieldMap>));

最佳答案

它希望您迭代键/值对。

修改您的代码以使用 KeyValuePair<string, DBFieldMap> :

foreach (KeyValuePair<string, DBFieldMap> item in audience.audienceSQLMap)

或者,更简洁地,只需使用 var :

foreach (var item in audience.audienceSQLMap)
{
    //Do something with item.fieldName and item.fieldValue
    var name = item.Value.fieldName;
    var value = item.Value.fieldValue;
    ...
}

如果您需要的只是字典的值,您可以迭代这些值:

foreach (DBFieldMap map in a.audienceSQLMap.Values)
{
    var name = map.fieldName;
    var value = map.fieldValue;
    ...
}

关于c# - foreach 循环中的转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32792567/

相关文章:

c# - 自动属性值未随结构更新

C# 使用索引器

asp.net - MacOSX 上的单声道 - "The runtime version supported by this application is unavailable."v4.5

ASP.NET - 将 JSON 从 jQuery 传递到 ASHX

c# - 使用 asp.net 将服务器证书导入 Keystore 以验证请求来自受信任的服务器

asp.net - ASP.NET 4.0 中最好的浏览器检测解决方案

c# - 在智能感知中找到但在编译时找不到的扩展

c# - IronPython 实现接口(interface)属性

C# IIS SignalR/signalr/hubs 文件夹

c# - 如何防止在我的文件中添加空行?