将列表中的对象与来自其他数据库的列表连接的选项

Option to join objects in list with list from other db

我有 2 个数据库和以下模型

对于数据库 1:

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

对于数据库 2:

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

方法我有

var storageitemList = context.StorageItem.ToList();

var storageList = context.Storage.ToList();

我想从storageitemList中添加相应的名字到StorageList中。 StorageList 将导致类似这样的结果,并且每个 storagelist 对象仍然可以访问。

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

目前字符串名称存储在数据库中,但这将更改为 Id。 但是名称仍然需要像现在一样显示在 Razor/blazor 前端页面中。 我需要做一个新的 Class 来组合它们还是 属性 包? 实现此目标的最佳解决方案是什么?

我开始研究 PropertyBag 以实现如下目标: 状态["姓名"]=storageitemlist.where(si=>si.id==storage.id); 但找不到模型的 属性bag 解决方案。 提前致谢

你应该明确你到底需要什么...... 我从 post 中了解到,您需要在 linq

中进行类似 Zip 操作的操作

来自(简而言之 C#)

Zip 运算符

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

在 Framework 4.0 中添加了 Zip 运算符。 它逐步枚举两个序列(如拉链),返回基于对每个元素对应用函数的序列。

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);

生成包含以下元素的序列:

3=three
5=five
7=seven

忽略任一输入序列中的额外元素。 EF 不支持 Zip 核心.

      var query = (from storage in storageList
                         join storageitem in storageitemList on storage.StorageItemId equals storageitem.Id
                         select (storage: storage, storageitem: storageitem)).ToList();

并且List<(Storage storage, StorageItem storageitem)>在您看来有模型

您还可以为模型创建一个新的 dto class

最好避免使用viewbags