#c# #entity-framework #linq
#c# #entity-framework #linq
Вопрос:
Я хочу отображать информацию о двух таблицах одновременно.
List<int> order_track = db.Order_Trackings.Where(e => e.UID == id).Select(q => q.ID).ToList();
if (order_track == null)
{
var rate = db.Ratings.OrderByDescending(e => e.Rate).Take(5);
}
List<int> fidList = db.OrderFoods.Where(q => order_track.Contains(q.OID)).Select(q => q.FID).ToList();
var qs = (from x in fidList
group x by x into g
let count = g.Count()
orderby count descending
select new { KEY = g.Key });
if (order_track.Count == 2)
{
var one = qs;
List<int> idList = new List<int>();
foreach (var val in one)
{
idList.Add(val.KEY);
}
var food = db.Foods.Where(q => idList.Contains(q.ID));
var rate = db.Ratings.OrderByDescending(e => e.Rate).FirstorDefault();
return Request.CreateResponse(HttpStatusCode.OK, rate);
Я хочу сделать что-то подобное, я надеюсь, вы поймете, чего я пытаюсь достичь, заранее спасибо.
var food = db.Foods.Where(q => idList.Contains(q.ID)amp;amp;db.Ratings.OrderByDescending(e => e.Rate).FirstorDefault());
return Request.CreateResponse(HttpStatusCode.OK, rate);
Ответ №1:
Если вы хотите объединить два результата в одну переменную, то самый простой способ сделать это — создать анонимный объект, например:
var result = new
{
food = db.Foods.Where(q => idList.Contains(q.ID)),
rate = db.Ratings.OrderByDescending(e => e.Rate).FirstorDefault()
};
return Request.CreateResponse(HttpStatusCode.OK, result);
Вы также можете создать a class
с двумя properties
, а затем создать экземпляр этого класса, но если это единственное место, где вы будете использовать этот класс, я бы не стал этого делать.
Комментарии:
1. он возвращается с заголовками продуктов и ставок, но я не хочу этого, я хочу обычный список
2. как использовать result.distinct здесь?
3. Вам нужен, например, рейтинг для каждого блюда? Пожалуйста, проясните это, и в этом случае также: как эти два связаны, например, имеет ли
Food
aRatingID
?