![](/img/trans.png)
[英]How to query database using LINQ to bring data from database based on array of months in ASP.Net MVC 5?
[英]ASP.NET MVC getting Distinct Values From Database using LINQ
當用戶提交表單時,我試圖從數據庫中獲取多個對象的ID和名稱。 我不想重復顯示結果。
我有我的表格:
@using (Html.BeginForm("Advancedresults", "Search", FormMethod.Post))
{
{
foreach (var r in ViewBag.res)
{
string hes = r.iname;
<div class="col-md-4">
@Html.CheckBox("drink", false, new { value = hes })
@r.iname
</div>
}
<input type="submit" />
}
}
這是使用HttpPost方法發送到我的搜索控制器的:
[HttpPost]
public ActionResult Advancedresults()
{
string drinks = Request.Form["drink"];
List<string> dList = drinks.Split(',').ToList();
dList = dList.Where(x => x != "false").ToList();
List<string> r = new List<string>();
foreach (string st in dList)
{
r.AddRange(from a in db.Recipes.AsEnumerable()
join b in db.RecipeIngredients on a.ID equals b.recipe_id
join i in db.Ingredients on b.ingredient_id equals i.id
join u in db.Measures on b.measure_id equals u.id
where i.name.Equals(st)
select a.name
);
}
List<string> ra = new List<string>();
foreach (string ras in r)
{
if (!ra.Contains(ras))
{
ra.Add(ras);
};
}
ViewBag.Ingredients = ra.ToList();
return View();
}
有沒有更好的方法將ID和名稱添加到ViewBag? 我知道我現在所做的不是最佳做法。
您可能可以通過使用Contains
和Distinct
來簡化它
var results = (from a in db.Recipes.AsEnumerable()
join b in db.RecipeIngredients on a.ID equals b.recipe_id
join i in db.Ingredients on b.ingredient_id equals i.id
join u in db.Measures on b.measure_id equals u.id
where dList.Contains(i.name)
select a.name ).Distinct();
ViewBag.Ingredients = results.ToList();
您可以使用LINQ的Distinct()方法從列表中選擇唯一值。 例:
List<string> ra = new List<string>(r.Distinct());
關於您是否可以在ViewBag中添加名稱和ID的問題,我建議您使用Dictionary:
Dictionary<int, string> Results = new Dictionary<int, string>();
鑒於此,您可以將LINQ查詢更新為以下內容:
var results = (from a in db.Recipes.AsEnumerable()
join b in db.RecipeIngredients on a.ID equals b.recipe_id
join i in db.Ingredients on b.ingredient_id equals i.id
join u in db.Measures on b.measure_id equals u.id
where dList.Contains(i.name).GroupBy(a => a.ID, a=>a.Name).ToDictionary(s=>s.Key, v=>v.First());
ViewBag.Ingredients = results.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.