首页 > 解决方案 > 在 String 对象上选择 ToString() 不会返回实际的 String

问题描述

我正在使用 MVC,我的一个模型是FormElementTypes,它有一个int IDstring Name. 当我尝试Name使用 Lambda 选择属性时,它不会返回属性的实际字符串。

例子

foreach (FormElements e in Model.FormElements)
{
    string field = Model.FormElementTypes.Where(f => f.ID == e.FormElementTypesID).Select(f => f.Name).ToString();
}

Name我应该选择的属性应该具有text. 但是当我把它写出来时,它吐了:System.Linq.Enumerable+WhereSelectListIterator`2[Scholar.Models.FormElementTypes,System.String]

我做错了什么,如何获取Name属性字符串?

标签: c#model-view-controllerlambda

解决方案


发生这种情况是因为您在作为集合对象的 Enumerable 对象上调用 ToString() 。您将需要遍历该集合。您可以在此处阅读有关 Linq 中 where 函数的更多信息

foreach (FormElements e in Model.FormElements)
        {
            var fields = Model.FormElementTypes.Where(f => f.ID == e.FormElementTypesID);
            if (fields != null) {
                foreach (var field in fields) {
                    string s = field.Name.ToString();
                }
            }
        }

推荐阅读