gpt4 book ai didi

c# - Linq、OData 和 WCF : “the method join is not supported”

转载 作者:太空宇宙 更新时间:2023-11-03 16:11:36 25 4
gpt4 key购买 nike

我正在尝试从多个表中恢复和显示数据。 o 我已经完成了这样的多重连接:

var prod = from product in context.PRODUCT
join islocated in context.ISAUDITEDIN on product.PRODUCT_ID equals islocated.PRODUCT_ID
join location in context.LOCATION on islocated.LOCATION_ID equals location.LOCATION_ID
orderby location.LOCATION_ID
group new
{
Location_ID = location.LOCATION_ID,
Product_ID = product.PRODUCT_ID
} by location.LOCATION_ID into locat
select new {
Location_ID = locat.Key,
Product = locat
};

其中 context 是导致 Web 服务调用的 OData。该链接有效:当我进行简单选择时,我能够恢复数据。然后,我想显示结果中的数据。所以我创建了一个字典:

Dictionary<string,List<ProductModel>> dict = new Dictionary<string,List<ProductModel>>();
foreach (var locat in prod) {
List<ProdctModel> products = new List<ProductModel>();
foreach (var p in locat.Product)
{
products.Add(new ProductModel(p.Location_ID, p.Product_ID));
}
dict.Add(locat.Location_ID.ToString(), products);
}

其中 ProductModel 是一个像这样的简单类:

public class ProdctModel
{
public int locationID{get; set;}
public int productID{get; set;}
public ProdctModel(int location_ID, int product_ID)
{
this.locationID = location_ID;
this.productID = product_ID;
}
}

但是当我运行它时,我得到了以下信息:

“the method join is not supported”
Ligne 131 : Dictionary<string,List<ProdctModel>> dict = new Dictionary<string,List<ProdctModel>>();
Ligne 132 : foreach (var locat in prod) {

如何解决?我已经通过使用方法 .Expand() 而不是 join 看到了一些东西,但我不知道如何使用它:你能帮我吗?

谢谢!

最佳答案

我从未将 odata 与 linq 一起使用,但我假设您不能加入不同的远程资源。尝试先将对象获取到内存,然后再进行连接:

var products = context.PRODUCT.ToList();
var islocateds = context.ISAUDITEDIN.ToList();
var locations = context.LOCATION.ToList();


var prod = from product in products
join islocated in islocateds on product.PRODUCT_ID equals islocated.PRODUCT_ID
join location in locations on islocated.LOCATION_ID equals location.LOCATION_ID
orderby location.LOCATION_ID
group new
{
Location_ID = location.LOCATION_ID,
Product_ID = product.PRODUCT_ID
} by location.LOCATION_ID into locat
select new {
Location_ID = locat.Key,
Product = locat
};

请记住,这将下载所有 3 个表格。

编辑此外,您在创建字典时遇到异常的原因是“prod”变量是一个 IEnumerable - 它仅在您执行“foreach”或类似操作时执行请求。

关于c# - Linq、OData 和 WCF : “the method join is not supported” ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17235923/

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