小编BKa*_*una的帖子

在LINQ中返回多个聚合列

我想将以下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)

aggregate linq-to-sql

9
推荐指数
2
解决办法
6373
查看次数

MVC 3 - 在视图中显示字典值

我怀疑这很简单,我只是想念它.

我有一个视图模型,它有一个字典作为其属性之一.这个词典用于在我编辑记录时用类别填充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)

asp.net-mvc dictionary razor

7
推荐指数
2
解决办法
1万
查看次数

找不到类型为"MyType"的默认成员

我正在使用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)

c# vb.net gridview

2
推荐指数
1
解决办法
5069
查看次数

即使数据不好,Ajax.BeginForm也会触发OnSuccess方法

我正在尝试将表单提交给控制器操作并基于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)

forms asp.net-mvc ajax.beginform razor

2
推荐指数
1
解决办法
7141
查看次数

使用相同的局部视图进行编辑和显示

我想使用相同的局部视图来显示记录和编辑记录.两个函数的布局都是相同的,它看起来比拥有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)

有没有更好的方法呢?

谢谢.

.net c# asp.net-mvc partial-views asp.net-mvc-3

0
推荐指数
1
解决办法
1077
查看次数