skip to Main Content

I have 2 databases and folowing models

For db 1:

Public class StorageItem
{
    public int Id { get; set; }
    public string Name { get; set; }    
}

for db 2:

public class Storage
{
    public int Id { get; set; }
    publict string name {get; set;}
    public int StorageItemId{ get; set; } 
}

I have the methods

var storageitemList = context.StorageItem.ToList();

and

var storageList = context.Storage.ToList();

I would like to add to the corresponding name from the storageitemList to the StorageList.
StorageList will result in something like this and each storagelist object is still accessible.

ID NAME
1 test
2 test2
id name storageitemId StorageItemName
1 test12 1 test
2 test4 2 test2

Currently the string name is stored in the database but this will be changed to the Id.
But the name needs still be showed in the Razor/blazor frontend page like now.
Do i need to make a new Class to combine them or a property bag?
What is the best solution to achieve this?

I started looking at PropertyBag to achieve something like:
Status["name"]=storageitemlist.where(si=> si.id == storage.id);
but cant find the propertybag solution for models.
thanks in advance

2

Answers


  1. You should clarify what you need exactly …
    What I did understand from the post is you need something like Zip operation in linq

    from (C# in nutshell)

    The Zip Operator

    IEnumerable<TFirst>, IEnumerable<TSecond>→IEnumerable<TResult>

    The Zip operator was added in Framework 4.0.
    It enumerates two sequences in step (like a zipper), returning a sequence based on applying a function over each element pair.

    For instance, the following:
    int[] numbers = { 3, 5, 7 };
    string[] words = { "three", "five", "seven", "ignored" };
    IEnumerable<string> zip = numbers.Zip (words, (n, w) => n + "=" + w);
    

    produces a sequence with the following elements:

    3=three
    5=five
    7=seven
    

    Extra elements in either input sequence are ignored. Zip is not supported by EF
    Core.

    Login or Signup to reply.
  2.       var query = (from storage in storageList
                             join storageitem in storageitemList on storage.StorageItemId equals storageitem.Id
                             select (storage: storage, storageitem: storageitem)).ToList();
    
    

    And List<(Storage storage, StorageItem storageitem)> has model in your view

    You can also create a new dto class for the model

    it is better to avoid using the viewbags

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search