Вот мой код:
Код: Выделить всё
public List GetRelatedProducts(List ids, string lang = "en")
{
List result = new List();
try
{
using (AppDbContext db = new AppDbContextFactory().CreateDbContext())
{
var relatedIds = ids
.Where(x => Guid.TryParse(x, out _))
.Select(Guid.Parse)
.ToList();
result = db.product
.Include(p => p.ProductLangs)
.Include(p => p.ProductPrices)
.Include(p => p.Images)
.Where(p => relatedIds.Contains(p.ID)) // p.ID is Guid
.ToList();
foreach (var p in result)
{
p.ProductLangs = p.ProductLangs
.Where(l => l.LangCode == lang)
.ToList();
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
return result;
}
< /code>
Когда я отлаживает: < /p>
ids → ["31fcd135-4ea9-469d-8b73-08dc6f3f37a4","e362bed1-deb1-46bd-e6a7-08dc99bb5b87"]
relatedIds → [31fcd135-4ea9-469d-8b73-08dc6f3f37a4, e362bed1-deb1-46bd-e6a7-08dc99bb5b87]
< /code>
Таким образом, список guid действителен.SELECT *
FROM Product
WHERE ID IN ('31fcd135-4ea9-469d-8b73-08dc6f3f37a4', 'e362bed1-deb1-46bd-e6a7-08dc99bb5b87');
< /code>
Но EF Core запрос всегда возвращает 0 результатов. < /p>
Мой вопрос: < /p>
Почему ядро EF Core с < /p>
.Where(p => relatedIds.Contains(p.ID))
Подробнее здесь: https://stackoverflow.com/questions/797 ... -0-results