gpt4 book ai didi

c# - 不允许使用源类型 'dynamic' 或具有类型 'dynamic' 的连接序列的查询表达式

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

我正在动态传递一个实体作为参数。但是,我在对同一实体对象使用 linq 时遇到异常。

错误:不允许使用源类型“动态”或具有“动态”类型的连接序列的查询表达式

private void CallCustomerCodeDynamically(dynamic customerEntities)
{
var customerCode= from customer in customerEntities.CustomerInfoes
orderby customer.CustomerCode ascending
select customer.CustomerCode;
ddlCustomerCode.DataSource = customerCode;
ddlCustomerCode.DataBind();
}

请给我一个解决这个问题的建议。

最佳答案

如前所述,Linq 不能很好地处理dynamic。 Linq 大量使用扩展方法,这些方法在编译时绑定(bind),因此您不能使用 dynamic,因为它将所有绑定(bind)推迟到运行时。

如果您有两个数据集,它们没有共同的基类型或接口(interface),但具有相同的实体类型(至少按名称),那么您将需要两个重载。您可能能够重构它的一部分以提高重用性:

private void CallCustomerCodeDynamically(CustmoerEntities1 customerEntities)
{
var customerCode= from customer in customerEntities.CustomerInfoes
orderby customer.CustomerCode ascending
select customer.CustomerCode;

BindCodes(customerCode);
}


private void CallCustomerCodeDynamically(CustmoerEntities2 customerEntities)
{
var customerCode= from customer in customerEntities.CustomerInfoes
orderby customer.CustomerCode ascending
select customer.CustomerCode;

BindCodes(customerCode);
}

private void BindCodes(IEnumerable<string> customerCode)
{
ddlCustomerCode.DataSource = customerCode;
ddlCustomerCode.DataBind();
}

关于c# - 不允许使用源类型 'dynamic' 或具有类型 'dynamic' 的连接序列的查询表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23114148/

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