如何从 LINQ 查询中删除重复记录
How to remove duplicate records from LINQ query
这是我的数据库的样子和我的代码,它通过 WhID 从数据库中获取所有数据
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var viewModel =
(from Wh in db.Werehouses
join WhK in db.WerehouseKeys on Wh.WhID equals WhK.WhID
join Itm in db.Items on Wh.WhID equals Itm.WhID
where Wh.WhID == id
select new WerehouseViewModel { Werehouse = Wh, WerehouseKey = WhK, Item = Itm });
if (viewModel == null)
{
return HttpNotFound();
}
return View(viewModel);
}
但是当我想在视图中显示它时,它显示了重复的键(例如键 1、键 2、键 3、键 1、键 2、键 3 等)和项目(项目 1、项目 2、第 1 项、第 2 项等)。如何从查询中删除重复项?
这是我的视图模型
public class WerehouseViewModel
{
public Werehouse Werehouse { get; set; }
public WerehouseKey WerehouseKey { get; set; }
public Item Item { get; set; }
}
我不知道你打算如何可视化它,但你有一个主 Werehouse
实体和 2 个细节 WerehouseKey
和 Item
实体,它们彼此无关,因此不能像您当前的视图模型那样组合在单个记录中。
我认为表示此类数据的唯一方法是将视图模型更改为:
public class WerehouseViewModel
{
public Werehouse Werehouse { get; set; }
public List<WerehouseKey> WerehouseKeys { get; set; }
public List<Item> Items { get; set; }
}
并使用两个 Group Join
填充它:
var viewModel =
(from Wh in db.Werehouses
join WhK in db.WerehouseKeys on Wh.WhID equals WhK.WhID into keys
join Itm in db.Items on Wh.WhID equals Itm.WhID into items
where Wh.WhID == id
select new WerehouseViewModel
{
Werehouse = Wh,
WerehouseKeys = keys.ToList(),
Items = items.ToList()
})
.FirstOrDefault();
这是我的数据库的样子和我的代码,它通过 WhID 从数据库中获取所有数据
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var viewModel =
(from Wh in db.Werehouses
join WhK in db.WerehouseKeys on Wh.WhID equals WhK.WhID
join Itm in db.Items on Wh.WhID equals Itm.WhID
where Wh.WhID == id
select new WerehouseViewModel { Werehouse = Wh, WerehouseKey = WhK, Item = Itm });
if (viewModel == null)
{
return HttpNotFound();
}
return View(viewModel);
}
但是当我想在视图中显示它时,它显示了重复的键(例如键 1、键 2、键 3、键 1、键 2、键 3 等)和项目(项目 1、项目 2、第 1 项、第 2 项等)。如何从查询中删除重复项?
这是我的视图模型
public class WerehouseViewModel
{
public Werehouse Werehouse { get; set; }
public WerehouseKey WerehouseKey { get; set; }
public Item Item { get; set; }
}
我不知道你打算如何可视化它,但你有一个主 Werehouse
实体和 2 个细节 WerehouseKey
和 Item
实体,它们彼此无关,因此不能像您当前的视图模型那样组合在单个记录中。
我认为表示此类数据的唯一方法是将视图模型更改为:
public class WerehouseViewModel
{
public Werehouse Werehouse { get; set; }
public List<WerehouseKey> WerehouseKeys { get; set; }
public List<Item> Items { get; set; }
}
并使用两个 Group Join
填充它:
var viewModel =
(from Wh in db.Werehouses
join WhK in db.WerehouseKeys on Wh.WhID equals WhK.WhID into keys
join Itm in db.Items on Wh.WhID equals Itm.WhID into items
where Wh.WhID == id
select new WerehouseViewModel
{
Werehouse = Wh,
WerehouseKeys = keys.ToList(),
Items = items.ToList()
})
.FirstOrDefault();