C# Linq查询重写
这真的让我难堪 我有两个问题 这个不起作用,有错误, LINQ to Entities无法识别方法GetAllCustomers()'方法,此方法无法转换为存储表达式 现在像这样重写它:C# Linq查询重写,c#,linq,linq-to-entities,iqueryable,C#,Linq,Linq To Entities,Iqueryable,这真的让我难堪 我有两个问题 这个不起作用,有错误, LINQ to Entities无法识别方法GetAllCustomers()'方法,此方法无法转换为存储表达式 现在像这样重写它: results = from p in theDocuments join cust in outletService.GetAllCustomers() on p.customer_id equals cust.id
results = from p in theDocuments
join cust in outletService.GetAllCustomers() on p.customer_id equals cust.id
select new DocumentModel()
{
customer_name = cust.name,
document_id = p.document_id,
document_type = p.document_type,
franchisee_id = p.franchisee_id,
customer_id = p.customer_id,
address = p.address
};
我知道这不能转换为它的相关SQL,但是,我不确定第二个查询在执行过程中有什么不同之处,以便它能够正常工作,它是否在执行任何其他操作之前执行GetAllCustomers()?它内部的工作方式有什么不同
如何重写第一个查询以使其正确执行
谢谢,
詹姆斯
**这就是我的结局**
results = theDocuments.Join(
outletService.GetAllCustomers(), docs => docs.customer_id, customers => customers.id, (doc, cust) => new DocumentModel()
{
document_id = doc.document_id,
document_type = doc.document_type,
franchisee_id = doc.franchisee_id,
customer_id = doc.customer_id,
address = doc.address,
area_id = doc.area_id,
customer_name = cust.name
});
第一个尝试将方法转换为SQL方法,第二个尝试在查询中创建联接。在我看来,正确的方法是使用join:)我是个问题。我找到了解决办法。那可能对你有帮助
dynamic user = new
{
Name = "",
Surname = ""
};
dynamic userModel = new
{
Name = "",
Surname = "",
FullName = ""
};
var query = db.User.AsNoTracking();
query = query.Select(x => new userModel
{
Name = x.Name,
Surname = x.SurName,
FullName = $"{x.Name}{x.SurName}",
}).ToList();
如果您尝试执行此查询。你会撞车的。Linq不支持
全名=$“{x.Name}{x.lasname}”
你必须把这行改成
全名=x.姓名+“”+x.姓氏
join使用
join
方法,这就是不同之处如果您声明了一个变量,如var Name=outletService.GetAllCustomers()。其中(xx=>xx.id==x.customer\u id)。First().Name
然后在第一次查询中使用它,它就会工作。显然,在将其与lambda expresiontanks一起使用之前,您需要获得该名称
!我想我要求它做的太多了,因为我希望它知道我加入的事。
dynamic user = new
{
Name = "",
Surname = ""
};
dynamic userModel = new
{
Name = "",
Surname = "",
FullName = ""
};
var query = db.User.AsNoTracking();
query = query.Select(x => new userModel
{
Name = x.Name,
Surname = x.SurName,
FullName = $"{x.Name}{x.SurName}",
}).ToList();