我想将以下SQL转换为LINQ:
SELECT
(Select count(BidID)) as TotalBidNum,
(Select sum(Amount)) as TotalBidVal
FROM Bids
Run Code Online (Sandbox Code Playgroud)
我试过这个:
from b in _dataContext.Bids
select new { TotalBidVal = b.Sum(p => p.Amount), TotalBidNum = b.Count(p => p.BidId) }
Run Code Online (Sandbox Code Playgroud)
但是得到一个错误"Bids不包含"Sum"的定义,并且没有可以找到接受"Bids"类型的第一个参数的扩展方法"Sum".
我怎么能在LINQ中这样做?
谢谢
结论如下:
最后的答案是:
var ctx = _dataContext.Bids;
var itemsBid = (from b in _dataContext.Bids
select new { TotalBidVal = ctx.Sum(p => p.Amount), TotalBidNum = ctx.Count() }).First();
Run Code Online (Sandbox Code Playgroud) 我怀疑这很简单,我只是想念它.
我有一个视图模型,它有一个字典作为其属性之一.这个词典用于在我编辑记录时用类别填充HTML选择.还有一个属性指示所选的CategoryID.但是,当我只显示记录时,我想显示与CategoryID对应的键/值对的值.
我的观点模型:
public class ItemEditVM
{
public int ItemID { get; set; }
public int? CategoryID { get; set; }
public string ItemDesc { get; set; }
public Dictionary<int, string> CategorySelect { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的东西,但我的函数参数错误了:
@Html.DisplayFor(model => model.CategorySelect.TryGetValue(model.CategoryID, out val))
Run Code Online (Sandbox Code Playgroud)
我也试过这个失败,没有特定的错误信息:
@Html.DisplayFor(model => model.CategorySelect.SingleOrDefault(c=> int.Parse(c.Value) == model.CategoryID).Value)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
非常感谢
正确的答案(感谢Mystere Man)
@Html.DisplayFor(model=>model.CategorySelect[Model.CategoryID.Value])
Run Code Online (Sandbox Code Playgroud) 我正在使用ObjectDataSource将对象绑定到GridView.在OnRowDataBound事件处理程序中,我正在尝试确定某个按钮是否应该可见.当运行时遇到此语句时,它会触发"找不到类型'Pledge'的默认成员." 错误:
lbDel.Visible = Not (e.Row.DataItem("BillingReady"))
Run Code Online (Sandbox Code Playgroud)
绑定到GridView的My Object类:
public class Pledges : System.Collections.CollectionBase
{
public Pledge this[int index]
{
get { return ((Pledge)(List[index])); }
set { List[index] = value; }
}
public int Add(Pledge pledge)
{
return List.Add(pledge);
}
}
Run Code Online (Sandbox Code Playgroud)
我的承诺课程:
public class Pledge
{
public int PledgeID { get; set; }
public int EventID { get; set; }
public int SponsorID { get; set; }
public int StudentID { get; set; }
public decimal Amount { get; set; } …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将表单提交给控制器操作并基于OnSuccess或OnFailure处理响应.问题是即使数据无效且我没有通过ModelState.IsValid测试,也会调用OnSuccess方法.应该调用OnFailure方法.
我的看法:
@using (Ajax.BeginForm("UpdateCategory", "Home", null, new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "categoryForm", OnSuccess = "alert('success');", OnFailure = "alert('failure');" }, new { id = "formEditCategory" }))
{
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.CategoryID)
<div>
<div class="editor-label">
@Html.LabelFor(model => model.CategoryName)
</div>
<div class="small-multiline-field">
@Html.EditorFor(model => model.CategoryName)
</div>
<div class="validationMsg">
@Html.ValidationMessageFor(model => model.CategoryName)
</div>
</div>
}
Run Code Online (Sandbox Code Playgroud)
我的控制器动作:
[HttpPost]
public ActionResult UpdateCategory(CategoryVM category)
{
try
{
if (ModelState.IsValid)
{
var itemService = new ItemViewModels();
itemService.UpdateCategory(category);
}
}
catch (DataException)
{
//Log the error …
Run Code Online (Sandbox Code Playgroud) 我想使用相同的局部视图来显示记录和编辑记录.两个函数的布局都是相同的,它看起来比拥有EditRecord局部视图和DisplayRecord局部视图要清晰得多.如果我只有一个部分视图要更新,维护将更容易.
我现在正在使用它并且它有效:
<div class="editor-label">
@Html.LabelFor(model => model.FirstName)
</div>
<div class="editor-field">
@if (@ViewBag.ViewMode == "display")
{
@Html.DisplayFor(model => model.FirstName)
}
else
{
@Html.EditorFor(model => model.FirstName)
}
@Html.ValidationMessageFor(model => model.FirstName)
</div>
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
谢谢.
asp.net-mvc ×3
c# ×2
razor ×2
.net ×1
aggregate ×1
dictionary ×1
forms ×1
gridview ×1
linq-to-sql ×1
vb.net ×1