c# - 在 String 对象上选择 ToString() 不会返回实际的 String
问题描述
我正在使用 MVC,我的一个模型是FormElementTypes
,它有一个int ID
和string 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
属性字符串?
解决方案
发生这种情况是因为您在作为集合对象的 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();
}
}
}
推荐阅读
- wordpress - 在 woocommerce 的购物车和结帐页面中显示自定义数据
- javascript - Vuex 更好的映射方式?
- reactjs - 用 Jest、Enzyme 进行测试
- java - Android - 在加载到 ImageView 之前调整图像大小以避免 OOM 问题
- java - 在java中被其他文本包围时查找模式
- javascript - 在 baseDir 导入上导出对象时类型丢失
- laravel - 使用 Laravel 命令创建 mongodb 数据库
- android - 如何更改单选按钮的半径
- html - 将 div 包装到父块中(无浮动:左)
- azure - 来自身份验证回调的 Azure oid 不是唯一的吗?Azure 活动目录