我正在使用MVC,我的模型之一是FormElementTypes
,它有一个int ID
和string Name
。当我尝试使用Lambda选择Name
属性时,它不会返回该属性的实际字符串。
示例
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
属性字符串?
答案 0 :(得分:1)
之所以发生这种情况,是因为您在一个Enumerable对象上调用ToString() 这是一个集合对象。 您将需要遍历集合。 您可以阅读有关Linq in here
中的where函数的更多信息dispatch_queue
答案 1 :(得分:0)
出现此问题是正常的,因为您尝试将IEnumerable转换为String,这是不可能的。
最诚挚的问候。
请尝试以下代码:
foreach (FormElements e in Model.FormElements)
{
string field = Model.FormElementTypes.Where(f => f.ID == e.FormElementTypesID).Select(f => f.Name).FirstOrDefault<string>();
}
答案 2 :(得分:-1)
您打算调用ToList()
而不是ToString()
来执行查询
var model = Model.FormElementTypes.Where(f => f.ID == e.FormElementTypesID).Select(f => f.Name).ToList();
就像得到实体一样
var modelName = Model.FormElementTypes.Where(f => f.ID == e.FormElementTypesID)
.Select(f => f.Name)
.FirstOrDefault();