How to edit anonymous dynamic list in c#





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















I am trying to create a dynamic list to act as an in memory working table in a single method. The dynamic list I create from linq to sql with an extra property (NewStatusId) that I'd like to update later in the same method. This method is a one off so it doesn't make sense to create a specific object class for this.



How can I achieve this result? I'm open to any means that doesn't involve created a dedicated class object, unless of course, I have to.



var lstApprovedButNotStartedWorkOrderDetailsItem = _workOrderDetailRepository.
SearchFor(wod =>
wod.ItemId == intItemId
)
.OrderByDescending(wod => wod.WorkOrderHeader.OrderDetail.OrderHeader.RushOrderFlag)
.Select(wod => new {
wod.Id,
wod.WorkOrderHeaderId,
wod.ItemId,
OriginalStatusId = wod.WorkOrderHeader.StatusId,
NewStatusId = wod.WorkOrderHeader.StatusId,
NeededQty = wod.EstimatedQuantity - wod.ActualQuantity,
wod.Item.QtyAvailable
})
.ToList();

if (lstApprovedButNotStartedWorkOrderDetailsItem.Count <= 0) return ActionConfirmation<int>.CreateSuccessConfirmation("No open work orders for item", -1);

//loop through work order details in order, subtracting that line item's needs from the total available
for (int i = 0; i < lstApprovedButNotStartedWorkOrderDetailsItem.Count; i++)
{
var wod = lstApprovedButNotStartedWorkOrderDetailsItem[i];
//if wod
lstApprovedButNotStartedWorkOrderDetailsItem[i].NewStatusId = decTotalUnitsAvailable >= wod.NeededQty
? (int)WorkOrderStatus.Released
: (int)WorkOrderStatus.InventoryHold;
}









share|improve this question























  • anonynous types are readonly i guess

    – Ehsan Sajjad
    Jan 4 at 16:08


















0















I am trying to create a dynamic list to act as an in memory working table in a single method. The dynamic list I create from linq to sql with an extra property (NewStatusId) that I'd like to update later in the same method. This method is a one off so it doesn't make sense to create a specific object class for this.



How can I achieve this result? I'm open to any means that doesn't involve created a dedicated class object, unless of course, I have to.



var lstApprovedButNotStartedWorkOrderDetailsItem = _workOrderDetailRepository.
SearchFor(wod =>
wod.ItemId == intItemId
)
.OrderByDescending(wod => wod.WorkOrderHeader.OrderDetail.OrderHeader.RushOrderFlag)
.Select(wod => new {
wod.Id,
wod.WorkOrderHeaderId,
wod.ItemId,
OriginalStatusId = wod.WorkOrderHeader.StatusId,
NewStatusId = wod.WorkOrderHeader.StatusId,
NeededQty = wod.EstimatedQuantity - wod.ActualQuantity,
wod.Item.QtyAvailable
})
.ToList();

if (lstApprovedButNotStartedWorkOrderDetailsItem.Count <= 0) return ActionConfirmation<int>.CreateSuccessConfirmation("No open work orders for item", -1);

//loop through work order details in order, subtracting that line item's needs from the total available
for (int i = 0; i < lstApprovedButNotStartedWorkOrderDetailsItem.Count; i++)
{
var wod = lstApprovedButNotStartedWorkOrderDetailsItem[i];
//if wod
lstApprovedButNotStartedWorkOrderDetailsItem[i].NewStatusId = decTotalUnitsAvailable >= wod.NeededQty
? (int)WorkOrderStatus.Released
: (int)WorkOrderStatus.InventoryHold;
}









share|improve this question























  • anonynous types are readonly i guess

    – Ehsan Sajjad
    Jan 4 at 16:08














0












0








0








I am trying to create a dynamic list to act as an in memory working table in a single method. The dynamic list I create from linq to sql with an extra property (NewStatusId) that I'd like to update later in the same method. This method is a one off so it doesn't make sense to create a specific object class for this.



How can I achieve this result? I'm open to any means that doesn't involve created a dedicated class object, unless of course, I have to.



var lstApprovedButNotStartedWorkOrderDetailsItem = _workOrderDetailRepository.
SearchFor(wod =>
wod.ItemId == intItemId
)
.OrderByDescending(wod => wod.WorkOrderHeader.OrderDetail.OrderHeader.RushOrderFlag)
.Select(wod => new {
wod.Id,
wod.WorkOrderHeaderId,
wod.ItemId,
OriginalStatusId = wod.WorkOrderHeader.StatusId,
NewStatusId = wod.WorkOrderHeader.StatusId,
NeededQty = wod.EstimatedQuantity - wod.ActualQuantity,
wod.Item.QtyAvailable
})
.ToList();

if (lstApprovedButNotStartedWorkOrderDetailsItem.Count <= 0) return ActionConfirmation<int>.CreateSuccessConfirmation("No open work orders for item", -1);

//loop through work order details in order, subtracting that line item's needs from the total available
for (int i = 0; i < lstApprovedButNotStartedWorkOrderDetailsItem.Count; i++)
{
var wod = lstApprovedButNotStartedWorkOrderDetailsItem[i];
//if wod
lstApprovedButNotStartedWorkOrderDetailsItem[i].NewStatusId = decTotalUnitsAvailable >= wod.NeededQty
? (int)WorkOrderStatus.Released
: (int)WorkOrderStatus.InventoryHold;
}









share|improve this question














I am trying to create a dynamic list to act as an in memory working table in a single method. The dynamic list I create from linq to sql with an extra property (NewStatusId) that I'd like to update later in the same method. This method is a one off so it doesn't make sense to create a specific object class for this.



How can I achieve this result? I'm open to any means that doesn't involve created a dedicated class object, unless of course, I have to.



var lstApprovedButNotStartedWorkOrderDetailsItem = _workOrderDetailRepository.
SearchFor(wod =>
wod.ItemId == intItemId
)
.OrderByDescending(wod => wod.WorkOrderHeader.OrderDetail.OrderHeader.RushOrderFlag)
.Select(wod => new {
wod.Id,
wod.WorkOrderHeaderId,
wod.ItemId,
OriginalStatusId = wod.WorkOrderHeader.StatusId,
NewStatusId = wod.WorkOrderHeader.StatusId,
NeededQty = wod.EstimatedQuantity - wod.ActualQuantity,
wod.Item.QtyAvailable
})
.ToList();

if (lstApprovedButNotStartedWorkOrderDetailsItem.Count <= 0) return ActionConfirmation<int>.CreateSuccessConfirmation("No open work orders for item", -1);

//loop through work order details in order, subtracting that line item's needs from the total available
for (int i = 0; i < lstApprovedButNotStartedWorkOrderDetailsItem.Count; i++)
{
var wod = lstApprovedButNotStartedWorkOrderDetailsItem[i];
//if wod
lstApprovedButNotStartedWorkOrderDetailsItem[i].NewStatusId = decTotalUnitsAvailable >= wod.NeededQty
? (int)WorkOrderStatus.Released
: (int)WorkOrderStatus.InventoryHold;
}






c# dynamic






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jan 4 at 16:06









Chad RichardsonChad Richardson

2,51563373




2,51563373













  • anonynous types are readonly i guess

    – Ehsan Sajjad
    Jan 4 at 16:08



















  • anonynous types are readonly i guess

    – Ehsan Sajjad
    Jan 4 at 16:08

















anonynous types are readonly i guess

– Ehsan Sajjad
Jan 4 at 16:08





anonynous types are readonly i guess

– Ehsan Sajjad
Jan 4 at 16:08












2 Answers
2






active

oldest

votes


















0














You can add to an existing list of anonymous types by adding another "anonymous type" with the same properties as the ones in the list:



using System;
using System.Linq;

public class Program
{
public static void Main()
{
Console.WriteLine("Hello World");
var list = (new { 1, 2, 3 })
.Select(i => new { Value = i })
.ToList();

list.Add(new { Value = 4 });

foreach (var i in list)
Console.WriteLine(i);
}
}


However, anonymous types are immutable. They are only projections of existing data and calculations. So you're better off just making a custom type for this ... it doesn't have to be very onerous, just make a new type that inherits from the "old" type that you're working with:



public class CustomWorkOrderDetailsItem : WorkOrderDetailsItem
{
public int NewStatusId {get;set;}
}





share|improve this answer

































    -2














    Had to copy the existing dynamic list to a new dynamic list of ExpandoObjects. Not the cleanest, but better than creating a dedicated class (for me):



    var workOrderStatusList = new List<dynamic>();

    //loop through work order details in order, subtracting that line item's needs from the total available
    for (int i = 0; i < lstApprovedButNotStartedWorkOrderDetailsItem.Count; i++)
    {
    //get wod instance
    var wod = lstApprovedButNotStartedWorkOrderDetailsItem[i];

    //Add new list item with updated status
    workOrderStatusList.Add(new ExpandoObject());
    workOrderStatusList[i].WorkOrderHeaderId = wod.WorkOrderHeaderId;
    workOrderStatusList[i].OriginalStatusId = wod.OriginalStatusId;
    workOrderStatusList[i].NewStatusId = decTotalUnitsAvailable >= wod.NeededQty
    ? (int)WorkOrderStatus.Released
    : (int)WorkOrderStatus.InventoryHold;

    //decrement allocated qty from available
    decTotalUnitsAvailable -= wod.NeededQty;
    }





    share|improve this answer
























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54042419%2fhow-to-edit-anonymous-dynamic-list-in-c-sharp%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      0














      You can add to an existing list of anonymous types by adding another "anonymous type" with the same properties as the ones in the list:



      using System;
      using System.Linq;

      public class Program
      {
      public static void Main()
      {
      Console.WriteLine("Hello World");
      var list = (new { 1, 2, 3 })
      .Select(i => new { Value = i })
      .ToList();

      list.Add(new { Value = 4 });

      foreach (var i in list)
      Console.WriteLine(i);
      }
      }


      However, anonymous types are immutable. They are only projections of existing data and calculations. So you're better off just making a custom type for this ... it doesn't have to be very onerous, just make a new type that inherits from the "old" type that you're working with:



      public class CustomWorkOrderDetailsItem : WorkOrderDetailsItem
      {
      public int NewStatusId {get;set;}
      }





      share|improve this answer






























        0














        You can add to an existing list of anonymous types by adding another "anonymous type" with the same properties as the ones in the list:



        using System;
        using System.Linq;

        public class Program
        {
        public static void Main()
        {
        Console.WriteLine("Hello World");
        var list = (new { 1, 2, 3 })
        .Select(i => new { Value = i })
        .ToList();

        list.Add(new { Value = 4 });

        foreach (var i in list)
        Console.WriteLine(i);
        }
        }


        However, anonymous types are immutable. They are only projections of existing data and calculations. So you're better off just making a custom type for this ... it doesn't have to be very onerous, just make a new type that inherits from the "old" type that you're working with:



        public class CustomWorkOrderDetailsItem : WorkOrderDetailsItem
        {
        public int NewStatusId {get;set;}
        }





        share|improve this answer




























          0












          0








          0







          You can add to an existing list of anonymous types by adding another "anonymous type" with the same properties as the ones in the list:



          using System;
          using System.Linq;

          public class Program
          {
          public static void Main()
          {
          Console.WriteLine("Hello World");
          var list = (new { 1, 2, 3 })
          .Select(i => new { Value = i })
          .ToList();

          list.Add(new { Value = 4 });

          foreach (var i in list)
          Console.WriteLine(i);
          }
          }


          However, anonymous types are immutable. They are only projections of existing data and calculations. So you're better off just making a custom type for this ... it doesn't have to be very onerous, just make a new type that inherits from the "old" type that you're working with:



          public class CustomWorkOrderDetailsItem : WorkOrderDetailsItem
          {
          public int NewStatusId {get;set;}
          }





          share|improve this answer















          You can add to an existing list of anonymous types by adding another "anonymous type" with the same properties as the ones in the list:



          using System;
          using System.Linq;

          public class Program
          {
          public static void Main()
          {
          Console.WriteLine("Hello World");
          var list = (new { 1, 2, 3 })
          .Select(i => new { Value = i })
          .ToList();

          list.Add(new { Value = 4 });

          foreach (var i in list)
          Console.WriteLine(i);
          }
          }


          However, anonymous types are immutable. They are only projections of existing data and calculations. So you're better off just making a custom type for this ... it doesn't have to be very onerous, just make a new type that inherits from the "old" type that you're working with:



          public class CustomWorkOrderDetailsItem : WorkOrderDetailsItem
          {
          public int NewStatusId {get;set;}
          }






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Jan 4 at 16:23









          Lews Therin

          2,80111641




          2,80111641










          answered Jan 4 at 16:14









          Joel MartinezJoel Martinez

          32.8k23111176




          32.8k23111176

























              -2














              Had to copy the existing dynamic list to a new dynamic list of ExpandoObjects. Not the cleanest, but better than creating a dedicated class (for me):



              var workOrderStatusList = new List<dynamic>();

              //loop through work order details in order, subtracting that line item's needs from the total available
              for (int i = 0; i < lstApprovedButNotStartedWorkOrderDetailsItem.Count; i++)
              {
              //get wod instance
              var wod = lstApprovedButNotStartedWorkOrderDetailsItem[i];

              //Add new list item with updated status
              workOrderStatusList.Add(new ExpandoObject());
              workOrderStatusList[i].WorkOrderHeaderId = wod.WorkOrderHeaderId;
              workOrderStatusList[i].OriginalStatusId = wod.OriginalStatusId;
              workOrderStatusList[i].NewStatusId = decTotalUnitsAvailable >= wod.NeededQty
              ? (int)WorkOrderStatus.Released
              : (int)WorkOrderStatus.InventoryHold;

              //decrement allocated qty from available
              decTotalUnitsAvailable -= wod.NeededQty;
              }





              share|improve this answer




























                -2














                Had to copy the existing dynamic list to a new dynamic list of ExpandoObjects. Not the cleanest, but better than creating a dedicated class (for me):



                var workOrderStatusList = new List<dynamic>();

                //loop through work order details in order, subtracting that line item's needs from the total available
                for (int i = 0; i < lstApprovedButNotStartedWorkOrderDetailsItem.Count; i++)
                {
                //get wod instance
                var wod = lstApprovedButNotStartedWorkOrderDetailsItem[i];

                //Add new list item with updated status
                workOrderStatusList.Add(new ExpandoObject());
                workOrderStatusList[i].WorkOrderHeaderId = wod.WorkOrderHeaderId;
                workOrderStatusList[i].OriginalStatusId = wod.OriginalStatusId;
                workOrderStatusList[i].NewStatusId = decTotalUnitsAvailable >= wod.NeededQty
                ? (int)WorkOrderStatus.Released
                : (int)WorkOrderStatus.InventoryHold;

                //decrement allocated qty from available
                decTotalUnitsAvailable -= wod.NeededQty;
                }





                share|improve this answer


























                  -2












                  -2








                  -2







                  Had to copy the existing dynamic list to a new dynamic list of ExpandoObjects. Not the cleanest, but better than creating a dedicated class (for me):



                  var workOrderStatusList = new List<dynamic>();

                  //loop through work order details in order, subtracting that line item's needs from the total available
                  for (int i = 0; i < lstApprovedButNotStartedWorkOrderDetailsItem.Count; i++)
                  {
                  //get wod instance
                  var wod = lstApprovedButNotStartedWorkOrderDetailsItem[i];

                  //Add new list item with updated status
                  workOrderStatusList.Add(new ExpandoObject());
                  workOrderStatusList[i].WorkOrderHeaderId = wod.WorkOrderHeaderId;
                  workOrderStatusList[i].OriginalStatusId = wod.OriginalStatusId;
                  workOrderStatusList[i].NewStatusId = decTotalUnitsAvailable >= wod.NeededQty
                  ? (int)WorkOrderStatus.Released
                  : (int)WorkOrderStatus.InventoryHold;

                  //decrement allocated qty from available
                  decTotalUnitsAvailable -= wod.NeededQty;
                  }





                  share|improve this answer













                  Had to copy the existing dynamic list to a new dynamic list of ExpandoObjects. Not the cleanest, but better than creating a dedicated class (for me):



                  var workOrderStatusList = new List<dynamic>();

                  //loop through work order details in order, subtracting that line item's needs from the total available
                  for (int i = 0; i < lstApprovedButNotStartedWorkOrderDetailsItem.Count; i++)
                  {
                  //get wod instance
                  var wod = lstApprovedButNotStartedWorkOrderDetailsItem[i];

                  //Add new list item with updated status
                  workOrderStatusList.Add(new ExpandoObject());
                  workOrderStatusList[i].WorkOrderHeaderId = wod.WorkOrderHeaderId;
                  workOrderStatusList[i].OriginalStatusId = wod.OriginalStatusId;
                  workOrderStatusList[i].NewStatusId = decTotalUnitsAvailable >= wod.NeededQty
                  ? (int)WorkOrderStatus.Released
                  : (int)WorkOrderStatus.InventoryHold;

                  //decrement allocated qty from available
                  decTotalUnitsAvailable -= wod.NeededQty;
                  }






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jan 4 at 18:37









                  Chad RichardsonChad Richardson

                  2,51563373




                  2,51563373






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54042419%2fhow-to-edit-anonymous-dynamic-list-in-c-sharp%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Monofisismo

                      Angular Downloading a file using contenturl with Basic Authentication

                      Olmecas