【发布时间】:2016-11-02 11:52:24
【问题描述】:
我正在使用实体框架和 Linq Querable,我想使用多个 where 子句选择一些数据。
在我的数据库中,我在一个字段中可能有多个 ID FieldOfInterestID,用“;”分隔(我知道,我知道,但做某事为时已晚),或者只有一个 id,这意味着逗号不会出现
我想用“;”分割字符串分隔符,而不是在我的 where 子句中使用所有这些 id。
我的代码如下所示:
await ctx.Customer.AsNoTracking()
.Where(e => e.UserId == userId)
.Select(e => new UserDTO {
FieldsOfStudy = ctx.Terms.Where(t => {
if (!e.FieldOfInterestID.Contains(";") && t.TermId.ToString() == e.FieldOfInterestID)
return true;
else if (e.FieldOfInterestID.Contains(";")
{
string fieldOfInterestIds = e.FieldOfInterestID.Split(";");
foreach (string fieldOfInterestID in fieldOfInterestIds)
{
if (t.TermId.ToString() == e.FieldOfInterestID)
return true;
else
return false;
}
}
else
return false;
}
})
.ToListAsync().ConfigureAwait(false);
我目前的“错误”是not all code paths return a value...
如何更好地在 where 子句中使用 string[]?
【问题讨论】:
-
您的
foreach()将运行 0 或 1 次。那是你的本意吗? 0 次情况是导致此错误的原因,但是您真正希望 2 个或更多元素发生什么? -
@HenkHolterman,不,我不是故意的 :)
标签: c# .net entity-framework linq lambda