エンティティフレームワークとLinq Querableを使用しています。複数のwhere句を使用してデータを選択したいとします。複数の場合Lambda式を使用するEFの条件
私のDBには、複数のIDがある可能性があるフィールドがあります。FieldOfInterestID
、 ";"で区切られています。 (私が知っている、私は知っているが、それは何かをする後半にあります)、または単に1つの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);
私の現在の "誤差" 私のwhere句より良いにnot all code paths return a value...
がどのように私は[]の文字列を使用することができます:
私のコードは次のようになりますか?
あなたの 'のforeach()' 0または1回実行されます。それはあなたが意図したものですか?0回の場合がこのエラーの原因ですが、2つ以上の要素で実際に何をしたいのですか? –
@HenkHolterman、いいえ、私はそれを意図していません:) –
あなたは[ゴム製の鴨](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)が必要です –