C# 使用Linq中第一个DDL的值填充DDL
我正在使用国家DDL中的文本填写国家DDLC# 使用Linq中第一个DDL的值填充DDL,c#,linq,C#,Linq,我正在使用国家DDL中的文本填写国家DDL foreach (var VARIABLE in ProfileMasterDAL.bindcountry()) { if (VARIABLE.ToString().Contains(DropDownList1.SelectedItem.Text)) { var query = from row in ProfileMa
foreach (var VARIABLE in ProfileMasterDAL.bindcountry())
{
if (VARIABLE.ToString().Contains(DropDownList1.SelectedItem.Text))
{
var query = from row in ProfileMasterDAL.bindstate().ToString()
where
ProfileMasterDAL.bindstate().ToString().Contains(DropDownList1.SelectedItem.Text)
select row;
DropDownList2.DataSource = query;
DropDownList2.DataBind();
}
}
但在查询时,我得到的枚举不会产生任何结果,并且状态DDL为空
public static IEnumerable bindstate()
{
var states = from b in getdata().Descendants("state").SelectMany(state => state.Elements("text"))
orderby (string) b
select (string) b;
return states;
}
好的,根据你的评论和问题的更新,我认为这就是你想要的:
foreach (var VARIABLE in ProfileMasterDAL.bindcountry())
{
if (VARIABLE.ToString().Contains(DropDownList1.SelectedItem.Text))
{
var query = from row in ProfileMasterDAL.bindstate()
where row.Contains(DropDownList1.SelectedItem.Text)
select row;
DropDownList2.DataSource = query;
DropDownList2.DataBind();
}
}
您正在
foreach
中设置数据源
,这意味着您可能会多次设置它,这不是一个好方法。另外,您正在查看州是否包含国家名称?那太尴尬了。最后,当您调试它时,您是否曾经进入该if
?为什么要尝试从字符串中选择某个内容?这最终是对char[]
的查询,当然这不是您想要的?我正在查找包含州名称的国家/地区。是的,我进入了if条件,在查询时遇到了问题。什么是ProfileMasterDAL.bindstate()
return?IEnumerable状态集合问题是我无法获取where子句,并且包含intellisense无法显示它们。您无法获取intellisense,因为您的bindstate()
方法只是返回一个IEnumerable
,intellisense无法检查和提供更多信息。如果您将该方法更改为返回IEnumerable
,您将获得更多信息。当我将该方法更改为返回XElement时,我在返回状态处遇到错误,因为无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.Generic.IEnumerable”。存在显式转换(是否缺少转换?@Chandrasekhar Ok将其更改回IEnumerable
,就像您所做的那样,我更新了我的答案。尽管我遇到了错误,但找不到源类型“System.Collections.IEnumerable”的查询模式的实现找不到的地方。考虑显式指定范围变量“行”的类型。