c# - 如何将 List 值分配给 List ValueTuples?
问题描述
我有返回 List 的方法,我想尝试从另一个标准列表中填充 ValueTuple 我收到错误:
无法将类型“System.Collections.Generic.List<(long PaymentId, long TransactionId)>”隐式转换为“System.Collections.Generic.List>”
代码如下所示:
public async Task<List<ValueTuple<(long, long)>>> CreditTransactionAsync(CancellationToken cancellationToken)
{
List<(long PaymentId, long TransactionId)> paymentTransactionList = new List<ValueTuple<long, long>>();
var paymentTransactions = _dbContext.PaymentTransactions
.AsEnumerable()
.Where(x => transactionIdsList.Any(a => a.TransactionId == x.TransactionId))
.Select(x => new
{
PaymentId = x.PaymentId,
TransactionId = x.TransactionId
})
.ToList();
// This line shows error..
paymentTransactionList = paymentTransactions.Select(x => (PaymentId: x.PaymentId, TransactionId: x.TransactionId));
return paymentTransactionList;
}
解决方案
您可以Select
稍微重写您的语句并将事务(long, long)
直接映射到元组列表,而无需中间匿名类型
.Select(x => (x.PaymentId, x.TransactionId))
完整代码
var paymentTransactions = _dbContext.PaymentTransactions
.AsEnumerable()
.Where(x => transactionIdsList.Any(a => a.TransactionId == x.TransactionId))
.Select(x => (x.PaymentId, x.TransactionId))
.ToList();
return paymentTransactions;
您还应该正确声明方法的返回类型,例如Task<List<(long paymentId, long transactionId)>>
推荐阅读
- javascript - 如何避免在反应js的搜索栏下一次显示所有元素
- iis - 无法使用主题备用名称访问在 https 端口 443 上配置的本地服务器
- sql - 试图获得开始时间和结束时间之间差异的平均值
- python - 精灵图像矩形移动太快
- vue.js - 如何创建导入另一个组件的 Vue 包
- r - 为数据框中的列变量着色并将其导出到 Excel
- jquery - 有条件的 Twitter Typeahead
- c++ - 为什么不接受使用概念的此类专业化?
- graphql - 如何从 Nuxt 前端访问经过身份验证的 GraphQL API
- mysql - 如何使用 ONE single QUERY 从 mysql 中的另一个表中查找不存在的值