gpt4 book ai didi

c# - 从 Linq 查询返回 List 返回查询语法而不是值

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

我有下面的代码来返回一个字符串列表。

public List<string> Top5CodesForToday()
{
var date = DateTime.Now;
var resultList = new List<string>();

using (var db = new PillowContext())
{
var qry = (from d in db.DownTimes
where DbFunctions.TruncateTime(d.DateTime) == DbFunctions.TruncateTime(date)
group d by new {d.Code}
into g
let total = g.Sum(x => x.Amount)
orderby total descending
let top5 = g.Take(5).ToList()
select new {g.Key.Code, Total = total});

foreach (var item in qry)
{
int x = item.Code;
var results = from r in db.DownTimeCodes
where r.Code == x
select r.Description;
resultList.Add(results.ToString());
}
}
return resultList;
}

当我查看 returnList 的内容时,我看到了正确数量的项目,但是每个项目都是由实际的查询语法组成的,而不是数据本身。我以前见过这个,通常通过执行 .ToList() 来解决它,但是我不确定如何更改我的代码来解决这个问题

最佳答案

这里的问题是,当您调用 ToString 时,查询还没有执行,所以本质上您是在 IQueryable 上调用 ToString对象,接收查询而不是结果。您需要调用一些东西来执行查询。

您仍然可以调用 ToList():

var results = (from r in db.DownTimeCodes
where r.Code == x
select r.Description).ToList();
resultList.AddRange(results);

或者,如果您只期望一个结果,请调用 FirstOrDefault()/SingleOrDefault():

var results = (from r in db.DownTimeCodes
where r.Code == x
select r.Description).FirstOrDefault();
resultList.Add(results);

关于c# - 从 Linq 查询返回 List<string> 返回查询语法而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21675960/

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