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
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.
produces a sequence with the following elements:
Extra elements in either input sequence are ignored. Zip is not supported by EF
Core.
And
List<(Storage storage, StorageItem storageitem)>
has model in your viewYou can also create a new dto class for the model
it is better to avoid using the viewbags