QS:
OK so I have a strongly-typed Customer "Details" view that takes a Customer object Model.
I am using LINQ to SQL and every Customer can have multiple (parking) Spaces.
This is a FK relationship in the database so my LINQ-generated Customer model has a "Spaces" collection. Great!
Here is a code snippet from my CustomerRepository where I iterate through the Customer's parking spaces to delete all payments, spaces and then finally the customer:
public void Delete(Customer customer)
{
foreach (Space s in customer.Spaces)
db.Payments.DeleteAllOnSubmit(s.Payments);
db.Spaces.DeleteAllOnSubmit(customer.Spaces);
db.Customers.DeleteOnSubmit(customer);
}
Everything works as expected!
Now in my "Details" view I want to populate a table with the Customer's Spaces:
<% foreach (var s in Model.Spaces)
{ %>
<tr>
<td><%: s.ID %></td>
<td><%: s.InstallDate %></td>
<td><%: s.SpaceType %></td>
<td><%: s.Meter %></td>
</tr>
<% } %>
I get the following error:
foreach statement cannot operate on variables of type 'System.Data.Linq.EntitySet' because 'System.Data.Linq.EntitySet' does not contain a public definition for 'GetEnumerator'
Finally, if I add this bit of code to my Customer partial class and use the foreach in the view to iterate through ParkingSpaces everything works as expected:
public IEnumerable<Space> ParkingSpaces
{
get
{
return Spaces.AsEnumerable();
}
}
The problem here is that I don't want to repeat myself. I was also thinking that I could use a ViewModel to pass a Spaces collection to the View, however LINQ already infers and creates the Spaces property on the Customer model so I think it would be cleanest to just use that.
I am missing something simple or am I approaching this incorrectly?
Thanks!
ANS:Sorry if Im a bit late answering this but the correct method of solving your problem is to add an assembly reference to your web.config file so that the view can access the GetEnumerator() method. You can do this using the assembly reference string provided in the page compliation error. eg
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
原文:
http://stackoverflow.com/questions/2710405/asp-net-mvc-linq-whats-the-proper-way-to-iterate-through-a-linq-entityset-in-a
分享到:
相关推荐
在JavaScript中,有三种主要的循环方法:`forEach`、`for-in`和`for-of`,每种都有其特定的用途和特点。 `forEach`方法是ES5引入的一个数组方法,简化了对数组元素的遍历。例如: ```javascript myArray.forEach...
foreach (变量类型 变量名 in 集合名) { 语句块 } ``` 其中,变量类型是集合中的元素类型,变量名是集合中的每个元素,集合名是要遍历的集合。 例如,下面是一个使用Foreach语句遍历数组的示例: ```csharp int[] ...
C#并发实战记录之Parallel.ForEach使用 本篇文章主要介绍了C#并发实战记录之Parallel.ForEach使用的相关知识点。通过示例代码,详细介绍了Parallel.ForEach的使用方法和优化技巧。 一、使用Parallel.ForEach优化...
foreach (类型 变量 in 集合) { // 循环体,执行的操作 } ``` 1. **类型**:这是迭代变量的类型,它应该与集合中的元素类型相匹配。 2. **变量**:在每次迭代中,`foreach`会将集合中的下一个元素赋值给这个变量。...
Delphi Foreach循环的用法实例,演示如何使用For Each生成循环,用赋值于文本框控件中,程序试图使用多种方式生成Foreach,并最终清除它。本示例面向Delphi基础学者,了解Delphi基础知识的一些应用。
foreach (var item in collection) { // 在这里执行针对item的操作 } ``` 这里的`collection`是你要遍历的集合,`item`是集合中的单个元素。`foreach`会依次处理集合中的每个元素,每次迭代都会将当前元素赋值给`...
foreach (类型 变量 in 集合) { // 循环体 } ``` `foreach`循环在背后会自动处理迭代器,使得代码更易读,但同时也隐藏了迭代的具体细节。在C#中,`foreach`适用于实现`IEnumerable`或`IEnumerator`接口的对象,...
Mybatis批量foreach merge into的用法 Mybatis批量foreach merge into的用法是通过Mybatis的动态SQL语法foreach循环插入实现的,这种方法可以批量插入时间价格表数据。如果某个套餐的某天的价格存在,则更新,不...
`C-FOREACH`是JavaServer Pages (JSP)中JSTL (JavaServer Pages Standard Tag Library)的一部分,用于在页面上进行循环遍历。它提供了便利的方式来迭代数组、集合、Map或者其他迭代对象中的元素。在JSP开发中,`C-...
foreach (type item in arrayOrCollection) { // 执行语句 } ``` 以遍历字符串数组为例: ```csharp string[] words = {"Hello", "World", "Foreach"}; foreach (string word in words) { Console.WriteLine(word...
在JavaServer Pages (JSP) 开发中,`c:forEach`标签是Java Expression Language (EL) 和 JavaServer Pages Standard Tag Library (JSTL) 的一部分,它提供了一个方便的方式来迭代数组、集合、Map或其他可迭代的数据...
foreach (类型 变量 in 集合/数组) { // 循环体 } ``` 在"for foreach效率测试代码"中,我们看到的是对这两种循环方式进行性能比较,执行1000000万次字符串遍历操作。这种测试通常是为了评估在大量数据处理时,哪...
jstl forEach 标签详解 jstl forEach 标签是 JavaServer Pages Standard Tag Library (JSTL) 中的一个标签,用于循环控制,可以将集合中的成员循序浏览一遍。该标签的运作方式为当条件符合时,就会持续重复执行的...
低版本IE数组和HTMLCollection元素集合不兼容forEach循环遍历的处理方法 原生JavaScript通过name获取dom元素得到的是 HTMLCollection元素集合 要想循环遍历可以用forEach,但是在低于ie9的版本下不兼容 var list...
### c:foreach 的各种用法详解 在JSP(JavaServer Pages)开发中,`<c:forEach>` 是一个非常重要的标签,它属于JSTL(JavaServer Pages Standard Tag Library)的一部分,主要用于循环处理集合、数组等数据结构。相...
在本篇文章中,我们将对foreach和in_array的使用进行探讨,并且分析在使用这些函数时可能遇到的问题。 foreach语句是PHP中一个非常方便的遍历数组的结构,它使开发者能够轻松地访问数组中的每一个元素。foreach有两...
在C++编程中,`foreach`关键字常用于遍历容器中的元素,它是STL(标准模板库)的一部分,提供了一种简洁的迭代器语法来访问序列容器(如vector、list、deque等)或关联容器(如set、map等)中的元素。在VC6.0环境下...
WHERE id IN <foreach collection="idsMap" item="id" key="key" open="(" separator="," close=")"> #{id} </foreach> ``` 这里`key="key"`表示Map的键,`item="id"`表示对应的值。 除了基本的使用,`...
对对Foreach语句测试
在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从而导致在foreach中删除元素时会抛出异常。 集合已修改;可能无法执行枚举操作。 方法一:采用for循环,并且从尾到头遍历 如果...