gpt4 book ai didi

C# Linq 查找符合条件的记录,如果找到该记录则返回所有相关记录

转载 作者:行者123 更新时间:2023-11-30 23:00:16 25 4
gpt4 key购买 nike

我的问题:我正在搜索发生在特定日期的账户交易。如果我找到当天的交易,我就需要收集该账户的交易历史并将其捆绑在一起。我当前的解决方案需要 2 个 linq 语句才能正确恢复数据。但是我还有一些其他的数据库调用,所以我正在尝试减轻负载

我当前的解决方案:首先,我使用 linq 语句收集当天发生的所有交易并仅返回帐号。然后我重新运行几乎相同的查询,但这次使用我需要的一切并使用 where 子句中第一个查询的帐号。 我还发现 linq 不喜欢在 where 子句中使用我的匿名类型,因此我在此期间将帐号转换为列表。

我的请求:谁能帮我找到一种更有效的方法来恢复我需要的数据?如果有人可以建议我可以对匿名问题进行​​更改,我将不胜感激。错误:无法创建“匿名类型”类型的常量值。在此上下文中仅支持基本类型或枚举类型。

我的代码:

public ICollection<ACCOUNT_TRANS> GetTransactionsByDate(DateTime date)
{
//Get account transactions that occur on this date
var results = this.ACCOUNT_TRANS
.Select(at => new { at.FK_ACCOUNT, at.COMPLETION_DATE })
.Where(at => at.COMPLETION_DATE.Value.Day == date.Day &&
at.COMPLETION_DATE.Value.Month == date.Month &&
at.COMPLETION_DATE.Value.Year == date.Year)
.ToList();
//Extract Account Number and removes the anonymous nature of the data
var accountNums = results.Select(r => r.FK_ACCOUNT).ToList();

//Return Transaction history for all changed changed
var results2 = this.ACCOUNT_TRANS
.Include(at => at.ACCOUNT_TABLE1)
.Include(at => at.ACCOUNT_TABLE2)
.Include(at => at.ACCOUNT_TABLE3)
.Include(at => at.ACCOUNT_TABLE4)
.Where(at => accountNums.All(r => r == at.FK_ACCOUNT))
.ToList();

return results2;
}

已解决

问题已解决,因为我尝试了很多事情而头晕目眩。这是代码应该是什么。 Linq 的意图是简洁明了:

public ICollection<ACCOUNT_TRANS> GetTransactionsByDate(DateTime date)
{
//Return Transaction history for all changed changed
var results = this.ACCOUNT_TRANS
.Include(at => at.ACCOUNT_TABLE1)
.Include(at => at.ACCOUNT_TABLE2)
.Include(at => at.ACCOUNT_TABLE3)
.Include(at => at.ACCOUNT_TABLE4)
.Where(at => at.COMPLETION_DATE.Value.Day == date.Day &&
at.COMPLETION_DATE.Value.Month == date.Month &&
at.COMPLETION_DATE.Value.Year == date.Year)
.ToList();

return results;
}

最佳答案

试试这个查询,就这个查询。

    var results2 = this.ACCOUNT_TRANS
.Include(at => at.ACCOUNT_TABLE1)
.Include(at => at.ACCOUNT_TABLE2)
.Include(at => at.ACCOUNT_TABLE3)
.Include(at => at.ACCOUNT_TABLE4)
.Where(at => this.ACCOUNT_TRANS
.Where(a => at.COMPLETION_DATE.Value.Day == date.Day &&
a.COMPLETION_DATE.Value.Month == date.Month &&
a.COMPLETION_DATE.Value.Year == date.Year)
.Select(a => a.FK_ACCOUNT).Contains(at.FK_ACCOUNT))
.ToList();

关于C# Linq 查找符合条件的记录,如果找到该记录则返回所有相关记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51676601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com