c# - 使用 linq c# 进行联合
问题描述
我正在尝试在 c# 中使用 linq 查询两个表。这两个表是 ManagerStrategy 和 Fund 表。一种经理策略将有一个或多个基金。我基本上需要一个以以下格式返回数据的结果集。Fund 表有 managerstrategy_id 外键
例如
ManagerStategyId, ManagerStrategyName
ManagerStrategyId, FundName
ManagerStrategyId, FundName
ManagerStrategyId, FundName
ManagerStategyId, ManagerStrategyName
ManagerStrategyId, FundName
ManagerStrategyId, FundName
我尝试了以下查询,但不确定如何根据上述格式提取数据
const int INVESTED = 1;
const int REDEEMING = 4;
const int ILIQUID = 134;
我在下面尝试过,但不确定使用 linq 是否正确有效?
如果 Id 和 Name 对,我想要做的是获取 Strategies 列表。获取与策略匹配的基金列表。生成一个再次包含 Id 和 Name 对的列表。这里的 id 将是资金表中的外键。最后一步是合并这个列表和策略列表以获得上述格式。
根据过滤条件获取所有策略
var strategies = GetService<MANAGERSTRATEGY>().Where(x => x.INVESTMENT_STATUS_ID == INVESTED || x.INVESTMENT_STATUS_ID == REDEEMING || x.INVESTMENT_STATUS_ID == ILIQUID).Select(x => new ListItemVM() {Id = x.ID, Name = x.NAME_TEXT}).ToList();
获取所有资金
var funds = GetService<FUND>().GetAll().Select(x => new ListItemVM() { Id = x.MANAGERSTRATEGY_ID.GetValueOrDefault(), Name = x.NAME_TEXT }).ToList();
进行内部连接以获取具有匹配策略的资金
var strategyFunds = strategies.Join(funds, x => x.Id, y => y.Id,(x, y) => new ListItemVM() { Id = x.Id, Name = x.Name }).ToList();
做一个联盟以在一个列表中获得策略和资金。
var managerStrategyFunds = strategies.Union(strategyFunds);
var managerStrategyFundViewModel = new List<ManagerStrategyFundViewModel>();
foreach (var item in managerStrategyFunds)
{
var summary = new ManagerStrategyFundViewModel
{
ManagerStrategyId = item.Id,
ManagerStrategyName = item.Name
};
managerStrategyFundViewModel.Add(summary);
}
var viewModel = managerStrategyFundViewModel.OrderBy(x => x.ManagerStrategyName).ToList();
return viewModel;
解决方案
推荐阅读
- mysql - 在mysql中聚合和计算值
- c# - AspNet Core 范围依赖接口隔离
- java - Apache POI:XWPFDocument 如何将带有注释的文本从一个文档复制到另一个文档
- pdf - 无法使用 Adobe Acrobat 打开 PDF 文件
- hyperledger-fabric - 超级账本结构的链码(智能合约)的安全问题
- python - 添加新选项 configparser 时出现重复部分
- docker - 从 Docker 容器运行 nbdiff-web
- python - 如何在python中用\x00填充地址
- javascript - 如果通过[谷歌电子表格]如何为单元格着色
- validation - Apache Commons Validator - 验证 VPN(子)域