我有以下方法: -
public IQueryable<ComponentDefinition> GetProducts(string[] type)
{ return entities.ComponentDefinitions.Where(a => a.ComponentType.COMPONENTTYPENAME.ToLower() == type.ToLower());
}
但我不知道如何添加诸如此类的内容,因此where将包含字符串数组: - : -
public IQueryable<ComponentDefinition> GetProducts(string[] type)
{ return entities.ComponentDefinitions.Where(a => a.ComponentType.COMPONENTTYPENAME.ToLower() == type.ToLower().Any(type));
}
答案 0 :(得分:3)
您正在寻找的陈述是
return entities.ComponentDefinitions
.Where(a => type.Contains(a.ComponentType.COMPONENTTYPENAME));
但ToLower()
怎么样?你可能不需要它。查询被转换为SQL,这意味着字符串的比较是在数据库中执行的。因此,数据库排序规则确定比较是否区分大小写。在大多数情况下,默认值不区分大小写。
如果排序规则区分大小写,则必须执行
return entities.ComponentDefinitions
.Where(a => type
.Contains(a.ComponentType.COMPONENTTYPENAME.ToLower()));
并确保type
数组仅包含小写字符串。
答案 1 :(得分:1)
怎么样:
public IQueryable<ComponentDefinition> GetProducts(string[] type)
{ return entities.ComponentDefinitions.Where(a => type.Contains(a.ComponentType.COMPONENTTYPENAME));}
如果没有,请查看加入COMPONENTTYPENAME字段上的集合。我发现linq查询比本例中的lambda表达式更容易理解
var result = from e in entities.ComponentDefifintion
join x in type on type.COMPONTENTTYPENAME.ToLower() equals e.COMPONENTTYPENAME.ToLower()
select x;