Linq to sql Linq到sql查询的帮助
在下面的代码中,value是一个字符串,其中包含逗号分隔的值,每个值都是一个类型名。我想得到与这些类型中的任何一个链接的实体,或者在它们的描述中有一个这样的类型。我已经将以下linq编写到sql Server,当存在具有这些类型的实体时,我总是得到0。你能帮忙吗Linq to sql Linq到sql查询的帮助,linq-to-sql,Linq To Sql,在下面的代码中,value是一个字符串,其中包含逗号分隔的值,每个值都是一个类型名。我想得到与这些类型中的任何一个链接的实体,或者在它们的描述中有一个这样的类型。我已经将以下linq编写到sql Server,当存在具有这些类型的实体时,我总是得到0。你能帮忙吗 string[] allValues = value.Split(','); var allTypes = ModelFactory.GetRepository<IRestaurantTypeRepository>().G
string[] allValues = value.Split(',');
var allTypes = ModelFactory.GetRepository<IRestaurantTypeRepository>().GetAllTypes();
return from ent in matchingEntities
from typeLink in ent.EntityRestaurantTypeLinks
join type in allTypes on typeLink.RestaurantTypeId equals type.RestaurantTypeId
where allValues.Contains(typeLink.RestaurantType.TypeName)
|| (
allValues.Contains(type.TypeName)
&& ent.Description.Contains(type.TypeName)
)
select ent;
在这种情况下,allValues是string[]类型。说明是字符串内容。我只想从allValues中获取其描述包含任何值的实体。上述陈述没有给出结果。根据您对问题的描述,听起来您的意思是
或,而不是和:
return from ent in matchingEntities
from typeLink in ent.EntityRestaurantTypeLinks
join type in allTypes on typeLink.RestaurantTypeId equals type.RestaurantTypeId
where allValues.Contains(typeLink.RestaurantType.TypeName)
|| allValues.Contains(type.TypeName)
|| ent.Description.Contains(type.TypeName)
select ent;
否则,您现在的查询将返回“与这些类型中的任何一种链接的所有实体,或者(是这些类型中的一种,并且在其描述中有这些类型之一)”从您对问题的描述中,听起来您的意思是或,而不是和:
return from ent in matchingEntities
from typeLink in ent.EntityRestaurantTypeLinks
join type in allTypes on typeLink.RestaurantTypeId equals type.RestaurantTypeId
where allValues.Contains(typeLink.RestaurantType.TypeName)
|| allValues.Contains(type.TypeName)
|| ent.Description.Contains(type.TypeName)
select ent;
否则,您现在的查询将返回“所有与这些类型中的任何一种链接的实体,或者(是这些类型中的一种,并且在它们的描述中有一种类型)”@lc,我已经尝试了您的解决方案,但仍然得到0个结果。@mohang,那么您是否遇到了区分大小写的问题?我明白了,它应该可以工作。另外,您已经在运行时检查了所有值,如果您不使用where子句进行筛选,则返回的实体正常?@lc,我已经尝试了您的解决方案,但仍然得到0个结果。@mohang,您是否遇到了区分大小写的问题?我看到了,它应该可以工作。另外,您已经在运行时检查了allValues
,如果不使用where子句进行筛选,则返回的实体是否正常?