我有一个存储在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) 我正在开发一个搜索页面,其中包含多个具有不同数据库值的下拉列表。我开始研究缓存技术并遇到了一些可能的解决方案
当我更多地了解不同类型的缓存时,我记得该应用程序还提供了指标页面,它可以利用搜索页面中的相同下拉菜单。现在,我想要一个站点范围的解决方案,而不是搜索页面解决方案。
在这两种情况下,我检索不同值的方式几乎相同。我有一个带有各种“可用”字段的 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?
我一直在寻找相当长的一段时间,但却找不到我要找的东西.
我想在我的控制器中生成一个图表,并通过ViewModel将其提供给我的视图.我找到的两篇最有用的文章是
http://www.codecapers.com/post/Build-a-Dashboard-With-Microsoft-Chart-Controls.aspx#tb
两者都向您展示了如何创建图表对象,但它们并没有帮助我以我想要的方式在视图中显示它.我知道您可以保存图像并只是从您的视图中打开图像,但如果我希望图表是交互式的呢?单击饼图上的切片或其他有用的"向下钻取"功能时,可能会转到另一个页面.
我很困惑吗?纯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) 我想创建一个相当于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'.第二,获得我想要的结果的正确语法是什么?我一直在寻找,我似乎无法使用扩展方法找到合适的答案.
我遇到了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字段可以添加这些附加参数.这是一个已知的问题?如何进一步调试并修复它?
我正在通过在线视频教程学习 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 是另一个 …
可能重复:
如何使用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)
有没有办法在此查询中访问其索引?
有哪些可能的方法来命名代表一系列数字的变量?例如,我正在开发一个度量应用程序,用于显示人员队列中某些项目的年龄.它们是以
我已经想过了拼写范围:zeroToFifty,range0-50.我还审议了"切片"给它们命名:first,second,third,但是这并不能证明是非常描述性的.你们做了什么代表数字范围?
我有一个表,其中一些项可能为空.我可以通过使用如下查询轻松查询:
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# ×8
linq ×5
asp.net-mvc ×3
.net ×1
arrays ×1
caching ×1
charts ×1
firefox ×1
html ×1
ienumerable ×1
javascript ×1
jquery ×1
list ×1
razor ×1
sql-server ×1