版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/smallbabylong/article/details/80665572
mvc controllers使用linq进行动态参数查询方式
public ActionResult Index(int? page)
{
string name = "";
string time="";
if (Request.QueryString["name"]!=null)
name=Request.Form["name"].ToString()==""?"": Request.Form["name"].ToString();
if (Request.QueryString["time"] != null)
time = Request.QueryString["time"].ToString();
int pageSize = 10;
int pageNumber = (page ?? 1);
var Sin= from S in db.SignIn
join S1 in db.Leader on S.LeaderID equals S1.ID
select new
{
S.City,
S.County,
S.Location,
S.Province,
S.Remark,
S.time,
S1.Name
};
if (name != "")
Sin = Sin.Where(a => a.Name.Equals(name));
if (time != "") {
DateTime date = DateTime.Parse(time);
Sin = Sin.Where(a => a.time.Year == date.Year && a.time.Month == date.Month && a.time.Day == date.Day);
}
ViewBag.TCount = Sin.ToList().Count;
float num = ViewBag.TCount;
List<SelectListItem> itemList = new List<SelectListItem>();
int pagecount = Convert.ToInt32(Math.Ceiling(Convert.ToDecimal(num / pageSize)));
for (int i = 1; i <= pagecount; i++)
{
SelectListItem item = new SelectListItem()
{
Value = i.ToString(),
Text = i.ToString()
};
itemList.Add(item);
}
ViewData["PageList"] = new SelectList(itemList, "Value", "Text");
return View(Sin.OrderByDescending(s=>s.time).ToPagedList(pageNumber, pageSize));
}
其中
if (name != "")
Sin = Sin.Where(a => a.Name.Equals(name));
if (time != "") {
DateTime date = DateTime.Parse(time);
Sin = Sin.Where(a => a.time.Year == date.Year && a.time.Month == date.Month && a.time.Day == date.Day);
}
为动态传入参数进行的查询
linq select新的字段组成新表view页面如何遍历查询?
以上方法返回一个model
在view页面操作方式如下:
@foreach (Object it in Model)
{
<tr>
@{
Object item = it;
if (i <= ViewBag.TCount) { i++; }
}
<td>
@item.GetType().GetProperty("Name").GetValue(item)
</td>
<td>
@item.GetType().GetProperty("Location").GetValue(item)
</td>
<td>
@item.GetType().GetProperty("time").GetValue(item)
</td>
<td>
@item.GetType().GetProperty("Province").GetValue(item)
</td>
<td>
@item.GetType().GetProperty("City").GetValue(item)
</td>
<td>
@item.GetType().GetProperty("County").GetValue(item)
</td>
<td>
@item.GetType().GetProperty("Remark").GetValue(item)
</td>
</tr>
}
将其转为item对象,进而进行操作,应用反射原理,也有使用dynamic的,但是在使用的过程中出现了问题,感兴趣的可以去探索一下