小编Jef*_*eff的帖子

查找每个键的最大值行

我有一个存储在SQL Server中的表,我希望使用LINQ进行查询.对表格的模糊描述:

  ID1  |  ID2  |  SomeData
-----------------------------
   1   |   1   |  'Moo'
   1   |   2   |  'Meow'
   1   |   3   |  'Woof'
   1   |   4   |  'Cheap'
   2   |   1   |  'Quack'
   2   |   2   |  'Grrrrr'
   2   |   3   |  'Wan wan'
Run Code Online (Sandbox Code Playgroud)

我只对ID2每个ID1示例所需结果的最大值的行感兴趣:

   1   |   4   |  'Cheap'
   2   |   3   |  'Wan wan'
Run Code Online (Sandbox Code Playgroud)

我想出了这个SQL代码:

SELECT *
FROM SomeTable a
INNER JOIN
(
    SELECT ID1, MAX(ID2) as SomeName
    FROM SomeTable
    GROUP BY ID1
) …
Run Code Online (Sandbox Code Playgroud)

c# linq sql-server entity-framework

5
推荐指数
1
解决办法
1939
查看次数

在 MVC 中缓存列表集合

我正在开发一个搜索页面,其中包含多个具有不同数据库值的下拉列表。我开始研究缓存技术并遇到了一些可能的解决方案

  1. 输出缓存
  2. HttpContext.Cache

当我更多地了解不同类型的缓存时,我记得该应用程序还提供了指标页面,它可以利用搜索页面中的相同下拉菜单。现在,我想要一个站点范围的解决方案,而不是搜索页面解决方案。

在这两种情况下,我检索不同值的方式几乎相同。我有一个带有各种“可用”字段的 ViewModel。这些字段填充在构造函数中。

public class SearchViewModel
{
    public AvailableSites {set;get;}

    public SearchViewModel()
    {
        AvailableSites = db.SomeTable.Select(s => s.Site).Distinct();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我的模型以这种方式设置时,每次用户点击搜索或指标页面时,应用程序都必须点击数据库来填充下拉菜单。缓存将大大减少它对数据库和网络造成的负载。

看来 OutputCache 仅适用于控制器操作,因此这似乎是不可能的。

不同查询的结果很少会改变。这是我想使用 HttpContext 缓存的东西吗?在这种情况下哪种类型的缓存最有效?

另外,将其集成到我的 MetricBase(每个指标 VM 都继承于此)和 SearchViewModel 中的最佳方法是什么?对于这种情况,继承似乎有点矫枉过正。我是否只包含该类private AvailableValue Values {set;get;}并通过访问它们Values.AvailableSites

c# asp.net-mvc caching razor

5
推荐指数
1
解决办法
3939
查看次数

在MVC 4中绘制图表

我一直在寻找相当长的一段时间,但却找不到我要找的东西.

我想在我的控制器中生成一个图表,并通过ViewModel将其提供给我的视图.我找到的两篇最有用的文章是

http://www.codecapers.com/post/Build-a-Dashboard-With-Microsoft-Chart-Controls.aspx#tb

在ASP.Net MVC中绘制图表3

两者都向您展示了如何创建图表对象,但它们并没有帮助我以我想要的方式在视图中显示它.我知道您可以保存图像并只是从您的视图中打开图像,但如果我希望图表是交互式的呢?单击饼图上的切片或其他有用的"向下钻取"功能时,可能会转到另一个页面.

我很困惑吗?纯asp.net mvc是否可以实现这种功能,还是我将第三方图表库的奇特功能混淆了?如果是前者,我如何public Chart queueChart { get; set; }在视图中渲染图表对象?

就像一张纸条,我对使用第三方图表库不感兴趣.

控制器:

//Query from db into model.queue
Chart chart = new Chart();
chart.Width = 600;
chart.Height = 400;
chart.Titles.Add("Title goes here");
chart.ChartAreas.Add(new ChartArea());
Series series = new Series();

series.ChartType = SeriesChartType.Pie;

foreach( Queue i in model.queue )
{
    string x = i.name;
    double y = i.count;

    series.Points.AddXY(x, y);
}

chart.Series.Add(series);

model.queueChart = chart;
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-mvc charts

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

有条件地加入LINQ

我想创建一个相当于a的LINQ join语句 Left Join

我的表设置如下:

Recipe
    RecipeID
    ...

Instruction
    RecipeID
    StepID
    SomeFlag
    ...
Run Code Online (Sandbox Code Playgroud)

等效SQL:

SELECT *
FROM Recipe r
LEFT JOIN Instruction i
    ON r.RecipeID = i.RecipeID
    AND SomeFlag > 0
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

var tmp = db.Recipe
    .GroupJoin(
        db.Instruction,
        r => r.RecipeID,
        i => i.RecipeID,
        (r, i) => new {r, i},
        ???);
Run Code Online (Sandbox Code Playgroud)

首先,GroupJoin这种操作的正确选择是什么?据我所知,Join相当于SQL'Internal Join',而GroupJoin相当于'Left Join'.第二,获得我想要的结果的正确语法是什么?我一直在寻找,我似乎无法使用扩展方法找到合适的答案.

c# linq

4
推荐指数
1
解决办法
7891
查看次数

在查询字符串中重复变量

我遇到了javascript和firefox 10.0.11的奇怪问题.我已经使用IE测试过,无法复制该问题.

我有一个链接到一个页面,显示有关对象的一些信息.我已使用javascript为此页面添加了其他功能.如果启用了javascript,则锚链接将重定向到javascript函数.

<a href="/Comment?id=1186281" onclick="return CommentSubmit(1186281)">Comment</a>
Run Code Online (Sandbox Code Playgroud)
function CommentSubmit(id) {
    $("#DynForm").append("<input type='hidden' name='id' value='" + id + "' />");
    $("#DynForm").attr("action", "/Comment/Index");
    $("#DynForm").submit();
    return false;
};
Run Code Online (Sandbox Code Playgroud)

如您所见,javascript会插入带有键值的隐藏输入标记.无javascript版本工作正常,但我遇到一些与JavaScript的问题.当Comment第一次点击任何项目的按钮时,它会罚款.如果我回击然后点击任何Comment链接,页面就会显示,就像我再次点击第一个链接一样.检查后,我注意到每个后续"后退"和"点击"的网址参数都会"堆叠"

/Comment?id=1
/Comment?id=1&id=2
/Comment?id=1&id=2&id=3
Run Code Online (Sandbox Code Playgroud)

如果我再次导航到该页面(不返回),第一个链接将再次起作用然后启动这个奇怪的行为.单击几个链接后查看页面源,我看到没有新hidden字段可以添加这些附加参数.这是一个已知的问题?如何进一步调试并修复它?

html javascript firefox jquery

3
推荐指数
1
解决办法
148
查看次数

用于加入的 Linq 扩展方法

我正在通过在线视频教程学习 LINQ、ASP.NET、EF 和 MVC。我希望在理解 LINQ 扩展方法语法中的连接方面得到一些帮助。

为简单起见,我有两个表(这些映射到 SQL DB):

User Table:
    public int userID{get;set;}
    public string firstName{get;set;}
    ...

Address
    public int ownerID{get;set;}
    public int value{get;set;}
    public string Nickname{get;set;}
    public string street{get;set;}
    public string zip{get;set;}
    ...
Run Code Online (Sandbox Code Playgroud)

假设我想查找特定用户拥有的所有财产。我相信我可以做这样的事情:

var test = db.User
    .Join(db.Address, user => user.userID, add => add.ownerID, (user, add) => new { user, add });
Source: http://byatool.com/c/linq-join-method-and-how-to-use-it/
Run Code Online (Sandbox Code Playgroud)

这应该相当于

SELECT * FROM User a JOIN Address b on a.userID = b.ownerID 
Run Code Online (Sandbox Code Playgroud)

请确认这是正确的。

现在,如果我想查找特定用户拥有的所有具有value greater than x. 让我们更进一步,假设 x 是另一个 …

c# linq asp.net-mvc entity-framework

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

从数组创建选择列表

可能重复:
如何使用linq查找列表中的索引特定项?

我试图IEnumerable<SelectListItem>从一个字符串数组创建一个.

string[] months = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };

model.month = months
        .Select(r => new SelectListItem{Text = r, Value = ???});
Run Code Online (Sandbox Code Playgroud)

有没有办法在此查询中访问其索引?

c# linq arrays ienumerable list

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

数字范围的命名约定

有哪些可能的方法来命名代表一系列数字的变量?例如,我正在开发一个度量应用程序,用于显示人员队列中某些项目的年龄.它们是以

  1. 0-50天
  2. 51-100天
  3. 100多天

我已经想过了拼写范围:zeroToFifty,range0-50.我还审议了"切片"给它们命名:first,second,third,但是这并不能证明是非常描述性的.你们做了什么代表数字范围?

c# naming-conventions

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

将null参数传递给LINQ where子句

我有一个表,其中一些项可能为空.我可以通过使用如下查询轻松查询:

db.SomeTable.Where(s => s.SomeCol == null)
Run Code Online (Sandbox Code Playgroud)

很简单,但这不起作用(没有结果.我怀疑它正在搜索空字符串;"")当使用碰巧为null的变量时,如下所示:

string variable = null;
db.SomeTable.Where(s => s.SomeCol == variable)
Run Code Online (Sandbox Code Playgroud)

我必须做一些特别的事情才能让它发挥作用吗?

c# linq entity-framework

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