将列表中的对象与来自其他数据库的列表连接的选项
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
我有 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