# Multi-Select DropDownDataGrid with Custom Query

**URL:** <https://forum.radzen.com/t/multi-select-dropdowndatagrid-with-custom-query/6213>\
**Category:** Blazor Server\
**Created:** [January 5, 2021, 9:33pm UTC](https://forum.radzen.com/t/multi-select-dropdowndatagrid-with-custom-query/6213 "2021-01-05T21:33:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![HeatherKent](https://forum.radzen.com/letter_avatar_proxy/v4/letter/h/e0b2c6/32.png) [@HeatherKent](https://forum.radzen.com/u/HeatherKent)\
**Post date:** [January 5, 2021, 9:33pm UTC](https://forum.radzen.com/t/multi-select-dropdowndatagrid-with-custom-query/6213/1 "2021-01-05T21:33:48Z")

</div>

I'm having trouble with a multi-select DropDownDataGrid using a custom class/query. Here's the definition of the class/query in the AddSpecification.razor.cs file for the AddSpecification page:

> ```
> public class VlDevices
> {
> public string ID { get; set; }
> public string System { get; set; }
> public string Description { get; set; }
> public string TagID { get; set; }
> }
> 
> public IEnumerable<VlDevices> GetVlDevices(string ProjectID)
> {
> var query = from VlDevices in ControlSpecContext.Specifications
> join VlSystems in ControlSpecContext.VlSystems on VlDevices.System equals VlSystems.ID
> where VlSystems.Project == ProjectID && (VlDevices.SpecificationType == "D9F0B7DD-E9BA-483D-8619-1B85426FA138" || VlDevices.SpecificationType == "EB40A506-4FB7-42BC-AEF2-310B9DE6EDDC")
> orderby VlSystems.Value, VlDevices.TagID, VlDevices.Description
> select new VlDevices
> {
> ID = VlDevices.ID,
> System = VlSystems.Value,
> Description = VlDevices.Description,
> TagID = VlDevices.TagID
> };
> 
> return query;
> }
> 
> ```

I create an IEnumerable variable to link to the Value of the DropDownDataGrid, link the Description to the TextProperty and the ID to the ValueProperty. Everything displays properly but the program locks up as soon as I make my first selection. In the output window in Radzen, I see that my query ran again and then I get the following:

> dotnet: warn: Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]  
> Unhandled exception rendering component: Collection was modified; enumeration operation may not execute.  
> System.InvalidOperationException: Collection was modified; enumeration operation may not execute.  
> at System.Collections.Generic.List`1.Enumerator.MoveNextRare() at System.Linq.Enumerable.SelectListIterator`2.MoveNext()  
> at System.Linq.Enumerable.CastIterator[TResult](IEnumerable source)+MoveNext()  
> at Radzen.Blazor.RadzenDropDownDataGrid`1.SelectItemFromValue(Object value) at Radzen.DropDownBase`1.OnParametersSetAsync()  
> at Microsoft.AspNetCore.Components.ComponentBase.CallOnParametersSetAsync()  
> at Radzen.RadzenComponent.SetParametersAsync(ParameterView parameters)  
> at Radzen.DropDownBase`1.SetParametersAsync(ParameterView parameters)
> 
> dotnet: fail: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]  
> Unhandled exception in circuit '1yfp1URkwfZ1bPMUNqwNJJu\_pXD-zA52gpKaad6dTT0'.  
> System.InvalidOperationException: Collection was modified; enumeration operation may not execute.  
> at System.Collections.Generic.List`1.Enumerator.MoveNextRare() at System.Linq.Enumerable.SelectListIterator`2.MoveNext()  
> at System.Linq.Enumerable.CastIterator[TResult](IEnumerable source)+MoveNext()  
> at Radzen.Blazor.RadzenDropDownDataGrid`1.SelectItemFromValue(Object value) at Radzen.DropDownBase`1.OnParametersSetAsync()  
> at Microsoft.AspNetCore.Components.ComponentBase.CallOnParametersSetAsync()  
> at Radzen.RadzenComponent.SetParametersAsync(ParameterView parameters)  
> at Radzen.DropDownBase`1.SetParametersAsync(ParameterView parameters)
> 
> dotnet: warn: Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]  
> Unhandled exception rendering component: Cannot access a disposed object.  
> System.ObjectDisposedException: Cannot access a disposed object.  
> at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder`1.ThrowObjectDisposedException() at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder`1.GrowBuffer(Int32 desiredCapacity)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendStepOut(DiffContext& diffContext)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange`1 oldTree, ArrayRange`1 newTree)  
> at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment)  
> at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry)  
> at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
> 
> dotnet: fail: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]  
> Unhandled exception in circuit '1yfp1URkwfZ1bPMUNqwNJJu\_pXD-zA52gpKaad6dTT0'.  
> System.ObjectDisposedException: Cannot access a disposed object.  
> at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder`1.ThrowObjectDisposedException() at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder`1.GrowBuffer(Int32 desiredCapacity)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendStepOut(DiffContext& diffContext)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)  
> at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange`1 oldTree, ArrayRange`1 newTree)  
> at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment)  
> at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry)  
> at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
> 
> dotnet: info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]  
> Executed endpoint '/\_blazor'  
> info: Microsoft.AspNetCore.Hosting.Diagnostics[2]  
> Request finished in 21880.9604ms 101
> 
> dotnet: info: Microsoft.AspNetCore.Hosting.Diagnostics[1]  
> Request starting HTTP/1.1 POST [http://localhost:5000/\_blazor/disconnect](http://localhost:5000/_blazor/disconnect) multipart/form-data; boundary=---------------------------112670202229380304581040539553 397

Could you tell me what I'm doing wrong?

Thank you,

Heather

---

<div class="post-metadata">

**Author:** ![enchev](https://forum.radzen.com/user_avatar/forum.radzen.com/enchev/32/16_2.png) [@enchev](https://forum.radzen.com/u/enchev)\
**Post date:** [January 6, 2021, 5:51am UTC](https://forum.radzen.com/t/multi-select-dropdowndatagrid-with-custom-query/6213/2 "2021-01-06T05:51:41Z")

</div>

Hi @HeatherKent,

Try to call ToList() for the IEnumerable before binding.

---

<div class="post-metadata">

**Author:** ![HeatherKent](https://forum.radzen.com/letter_avatar_proxy/v4/letter/h/e0b2c6/32.png) [@HeatherKent](https://forum.radzen.com/u/HeatherKent)\
**Post date:** [January 6, 2021, 1:47pm UTC](https://forum.radzen.com/t/multi-select-dropdowndatagrid-with-custom-query/6213/3 "2021-01-06T13:47:51Z")

</div>

Thank you so much for the suggestion! I changed the Data binding to ${VlDevicesResult}.ToList() and I'm no longer getting the error message. However, the multi-select does not work. The array only contains the last item selected. Any thoughts on why this might not be working?

Thanks for your help!

Heather

_EDIT_ It looks like I may not have understood where I should be doing the ToList call because doing it in the data binding sort of works but not really.

---

<div class="post-metadata">

**Author:** ![HeatherKent](https://forum.radzen.com/letter_avatar_proxy/v4/letter/h/e0b2c6/32.png) [@HeatherKent](https://forum.radzen.com/u/HeatherKent)\
**Post date:** [January 6, 2021, 4:00pm UTC](https://forum.radzen.com/t/multi-select-dropdowndatagrid-with-custom-query/6213/4 "2021-01-06T16:00:09Z")

</div>

Figured it out. Your suggestion was spot-on but I was doing it in the wrong location. After invoking my custom method, I set the object for my results to ${result}.ToList() instead of setting it to ${result}. Now the control is working as expected.

Thanks again for your assistance!

Heather
