gpt4 book ai didi

c# - 找不到正确的方法来调用延迟的 LINQ 语句

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:37 26 4
gpt4 key购买 nike

这是代码,带有注释以解释正在发生的事情

public IQueryable<ImportUserAttemptViewModel> GetReports ()
{
// used to retrieve information
var userInfoServices = new UserInfoServices();

// get IQueryable<BasicImprtReport>
var attempts = GetBasicReports(type);

// convert to view model
var formattedAttempts =
(from BasicImportReport attempt in attempts
orderby attempt.DateStarted descending
select new ImportUserAttemptViewModel
{
ID = attempt.ID,
When = attempt.DateStarted,
NumberFailed = attempt.NumberFailed,
NumberProcessed = attempt.NumberProcessed,
UserName = userInfoServices.GetUserName(attempt.UserID)


});

return formattedAttempts;
}

当我尝试执行 GetReports.ToList() 时,例如:

var report = GetReports().ToList();

我得到错误:

LINQ to Entities does not recognize the method 'System.String GetUserName(Int32)' method, and this method cannot be translated into a store expression.

我想这是因为 userInfoServices 在延迟执行时超出了范围。有没有办法让 LINQ to entities 找到需要的方法?

(我知道还有其他解决方案,比如使用join来查找用户名,但我很感兴趣是否还有其他可以做的)

最佳答案

您可以在 LINQ 中的匿名类型定义中创建 userInfoService 的实例,这样您就没有可能超出范围的变量。但如果可能,请向您的用户表添加一个连接。

关于c# - 找不到正确的方法来调用延迟的 LINQ 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6703033/

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