如何修复错误&;No property or field 'Color'存在类型'String&
本文关键字:Color 存在 String field 类型 property 何修复 错误 No or | 更新日期: 2023-09-27 18:04:15
使用动态Linq和实体框架工作,我有以下代码:
private void ComboBox_DropDown(object sender, EventArgs e)
{
ComboBox cb1 = (ComboBox)sender;
string SelectField = cb1.Name.Substring(2);
var query = MyContext.Items.Select(SelectField);
foreach (ComboBox cb2 in gbFilters.Controls.OfType<ComboBox>().Where(com => com.Text != ""))
{
string propertyName = cb2.Name.Substring(2);
string propertyValue = cb2.Text;
query = query.Where(propertyName + "=@0", propertyValue);
}
var x = query;
x = x.Provider.CreateQuery(
Expression.Call(
typeof(Queryable), "Distinct",
new Type[] { x.ElementType },
x.Expression));
foreach (var y in x)
{
if (y != null)
cb1.Items.Add(y.ToString());
}
}
主要焦点是每个部分。其他一切似乎都很好。但当我有另一个有值的下拉菜单时,我得到一个错误。"类型'String'中不存在'Color'属性或字段",并且Color可以用任何组合框名称替换。
所以在上面的例子中,如果ComboBox cbColor
有文本White
,我在ComboBox 'cbType'上执行下拉,上面的代码将变得与:
var query = MyContext.Items.Select("Type");
query = query.Where("Color=@0", "White");
和我得到错误"没有属性或字段'Color'存在类型'String "
您的步骤顺序不对。查询的每个部分都按照应用的顺序执行。首先,您将其缩小到字符串列表,然后将where过滤器应用于字符串列表,应用select last而不是First。