首页 > 解决方案 > 在 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)&&db.Ratings.OrderByDescending(e => e.Rate).FirstorDefault());
return Request.CreateResponse(HttpStatusCode.OK, rate);

标签: c#entity-frameworklinq

解决方案


如果要将两个结果合并到一个变量中,那么最简单的方法是创建一个匿名对象,如下所示:

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);

您也可以class使用两个创建一个properties,然后创建该类的一个实例,但如果这是您将使用该类的唯一地方,那么我不会费心去做。


推荐阅读