我使用實體框架和LINQ Querable,我想用一個多where子句選擇一些數據。多個地方使用lambda在EF條件表達式
在我的數據庫中,我有一個字段可能有多個ID FieldOfInterestID
,用「;」分隔。 (我知道,我知道,但它是來不及做的東西),或只是一個ID,這意味着逗號將不存在
我想將字符串分割「;」分離器,而且比所有這些ID在我的where子句中使用它們。
我的代碼看起來是這樣的:
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子句更好?
你'的foreach()'將會運行0或1次。這是你的意圖嗎?0次的情況是造成這個錯誤的原因,但是你真的想爲2個或更多元素髮生什麼? –
@HenkHolterman,不,我不打算:) –
你需要[一個橡皮鴨](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) –