我需要一些帮助来理顺一些东西,我知道这是一个非常容易的简单问题,但它在SQL中稍微让我感到困惑.
此SQL查询在Oracle中引发"非GROUP BY表达式"错误.我理解为什么,正如我所知,一旦我按元组的属性进行分组,我就再也无法访问任何其他属性了.
SELECT *
FROM order_details
GROUP BY order_no
Run Code Online (Sandbox Code Playgroud)
不过这个确实有效
SELECT SUM(order_price)
FROM order_details
GROUP BY order_no
Run Code Online (Sandbox Code Playgroud)
只是具体我对此的理解....假设每个订单的order_details中有多个元组,一旦我按照order_no对元组进行分组,我仍然可以访问组中每个元组的order_price属性,但只使用聚合函数?
换句话说,在SELECT子句中使用的聚合函数能够深入到组中以查看"隐藏"属性,其中简单地使用"SELECT order_no"会抛出错误?
我正在尝试使用C创建一个字符串数组malloc.数组将保留的字符串数可以在运行时更改,但字符串的长度将始终保持一致.
我试过这个(见下文),但是遇到了麻烦,我们非常感谢任何正确方向的提示!
#define ID_LEN 5
char *orderedIds;
int i;
int variableNumberOfElements = 5; /* Hard coded here */
orderedIds = malloc(variableNumberOfElements * (ID_LEN + 1));
Run Code Online (Sandbox Code Playgroud)
最终我希望能够使用数组来执行此操作:
strcpy(orderedIds[0], string1);
strcpy(orderedIds[1], string2);
/* etc */
Run Code Online (Sandbox Code Playgroud) 打印指针时遇到问题.每次我尝试编译下面的程序时,我都会收到以下错误:
pointers.c:11: warning: format ‘%p’ expects type ‘void *’, but argument 2 has type ‘int *’
Run Code Online (Sandbox Code Playgroud)
我显然在这里遗漏了一些简单的东西,但是从我见过的类似代码的其他考试中,这应该是有效的.
这是代码,任何帮助都会很棒!
#include <stdio.h>
int main(void)
{
int x = 99;
int *pt1;
pt1 = &x;
printf("Value at p1: %d\n", *pt1);
printf("Address of p1: %p\n", pt1);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 最近我的重点是创建一个可以托管第三方MVC插件的ASP.NET MVC应用程序.理想情况下,这些插件的开发将遵循以下规则:
经过一番研究后,我想出了以下几种方法来实现这一点,每种方法各有优缺点.
工作流程
PreApplicationStartMethodAttribute,MEF或主机项目中的基本组件参考(如果可能).Area主机内的插件.好处
PreApplicationStartMethodAttribute,项目引用)之前和应用程序启动之后(MEF),将程序集包含到主机App Domain中很简单缺点
结论
这是最简单的方法,但它也是最不安全的方法.它基本上消除了允许不受信任的开发人员创建插件的可能性,因为这些插件将具有与宿主应用程序相同的信任级别(这意味着如果宿主应用程序可以执行诸如System.IO.File.Delete插件之类的方法)
这种方法旨在允许创建可以沙箱化为自己的MVC插件,AppDomains并由主机通过System.Addin库使用.
结构体
在主机中设置路由,以确定正在处理的URL是否针对插件.可能有这样的模式example.com/p/{plugin}/{controller}/{action}/{id}
具有上述模式的所有路由都映射到具有模块路由操作的主机控制器.该操作会查看任何给定的路由,并根据段确定处理请求的相应插件{plugin}.
插件视图是一个接收器/发送器对象,充当插件控制器的网关.它有一个名为AcceptRequest的方法,它RequestContext从主机接收a ,并返回一个ActionResult.
插件管道包含可以串行化RequestContext并ActionResult跨管道隔离边界传输的适配器.
执行流程
匹配插件的路由并调用插件路由控制器.
控制器将所需的插件加载到它自己的插件中AppDomain并调用AcceptRequest,通过RequestContext(通过管道序列化)
AcceptRequest接收上下文并根据该请求确定要执行的适当控制器(使用自定义控制器工厂).
一旦控制器完成执行请求,它就会ActionResult向接收器对象返回一个接收器对象,然后将该接收器对象 …
我有一个带有from的视图模型,其中包含一组复选框.在我的控制器的post back方法中绑定时,我需要复选框映射到数组.
这是视图模型.
@model TMDM.Models.TestSeriesCreateViewModel
@{
ViewBag.Title = "Create";
}
<h2>Create a Test Series</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<div class="editor-label">
@Html.LabelFor(model => model.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title)
</div>
<h3>Which Test Collections are in this Test Series?</h3>
<div class="editor-field">
@{
var i = 0;
foreach (var testCollection in Model.TestCollections)
{
<input type="checkbox" id="ChosenTestCollectionIds[@i]" name="ChosenTestCollectionIds[@i]" value="@testCollection.Id" />
<span>@testCollection.Title</span>
<br />
i++;
}
}
</div>
<p>
<input type="submit" value="Save" class="medium green awesome" />
@Html.ActionLink("Cancel", "Index", "TestSeries", null, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Xunit设置我的测试.我要求删除测试文件夹开头的所有图像,然后每个方法都会调整一些图像大小,并将其输出的副本保存到文件夹中.该文件夹应该只清空一次,然后每个方法将自己的图像保存到该文件夹中.
当我使用时IUseFixture<T>,ClearVisualTestResultFolder在每次测试之前仍然会调用该函数,所以我最终只在文件夹中有一个图像.
public class Fixture
{
public void Setup()
{
ImageHelperTest.ClearVisualTestResultFolder();
}
}
public class ImageHelperTest : IUseFixture<EngDev.Test.Fixture>
{
public void SetFixture(EngDev.Test.Fixture data)
{
data.Setup();
}
public static void ClearVisualTestResultFolder()
{
// Logic to clear folder
}
}
Run Code Online (Sandbox Code Playgroud)
如果我把ClearVisualTestResultFolder它放在构造函数中,它也会为每个测试方法调用一次.我需要在执行所有测试方法之前运行一次,我该如何实现?
如果重要,我使用ReSharper测试运行器.
我在C中编写了一个简单的随机数生成器,int l它是下限,int u是上限.
它运作得很好,但我有一个关于播种它的问题.如果我在循环中运行它,time(NULL)不会足够快地更改种子值,以防止获得完全相同的连续系列随机数.
我想知道其他人怎么可能解决这个问题.我在网上找到的所有例子都time(NULL)用作种子值生成器.
int generateRandom(int l, int u)
{
srand(time(NULL));
int r = rand() % ((u - l) + 1);
r = l + r;
return r;
}
Run Code Online (Sandbox Code Playgroud)
如果我是紧挨着彼此碰撞的几行代码,无论是Rand1和Rand2是完全一样的.
printf("Rand1 = %d\n", generateRandom(10, 46));
printf("Rand2 = %d\n", generateRandom(10, 46));
Run Code Online (Sandbox Code Playgroud) 我正在使用Newtonsoft.Json.JsonSerializer序列化小数.
如何将其设置为序列化十进制数,只有1位小数,最后使用0.
即3.5序列化为"3.50"?
我遇到一个问题,每次我将表单发回到[HttpPost]我的控制器动作版本时,ModelBinder都会返回一个null对象.我无法理解为什么.如果我更改签名以使用FormCollection替代,我可以看到已经设置了所有正确的密钥.有人可以帮我指出这里有什么问题,因为我无法发现它.
以下是处理我的观点的模型
public class DeviceModel
{
public int Id { get; set; }
[Required]
[Display(Name = "Manufacturer")]
public int ManufacturerId { get; set; }
[Required]
[Display(Name = "Model")]
[StringLength(20)]
public string Model { get; set; }
[StringLength(50)]
[Display(Name = "Name")]
public string Name { get; set; }
[StringLength(50)]
[Display(Name = "CodeName")]
public string CodeName { get; set; }
public int? ImageId { get; set; }
}
public class DeviceCreateViewModel : DeviceModel
{
public IEnumerable<SelectListItem> Manufacturers { …Run Code Online (Sandbox Code Playgroud) 说我有这样的模特
public class User
{
[Required]
[StringLength(14, ErrorMessage = "Can only be 14 characters long")]
public string UserName;
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个这样的Html帮助器:
@Html.ValidatableEditorFor(m => m.UserName)
Run Code Online (Sandbox Code Playgroud)
这样它就会向jQuery Vaidation插件发出一个正确格式的文本字段,以便能够验证,如下所示:
<input type="text" class="required" maxlength="14" />
Run Code Online (Sandbox Code Playgroud)
根据我的研究,似乎没有办法迭代MetaDataModel中的所有数据注释,以便我可以检查哪一个适用于jQuery验证.
我如何设想它在伪代码中工作:
var tag = new TagBuilder("input");
tag.mergeAttribute("type", "text");
foreach(var attribute in metadata.attributes)
{
CheckForValidatableAttribute(attribute, tag);
}
...
private void CheckForValidatableAttribute(DataAnnotation attribute, TagBuilder tag)
{
switch(attribute.type)
{
case Required:
tag.addClass("required");
break;
case StringLength
tag.mergeAttribute("maxlength", attribute.value)
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么能去实现这样的帮助呢?我希望它能够处理数据注释,这样我就不必复制验证文字了.
例如,像TextEditorFor这样的当前Html帮助程序会将可验证的属性附加到其输出字段.它是如何做到的,我如何实现自己的实现?
干杯