我在SQL Server 2008 R2数据库中有一个表,并且想要添加一个名为LastUpdated的列,每次更新行时都会自动更改.这样,我可以看到每个行最后一次更新的时间.
似乎SQL Server 2008 R2没有像早期版本那样处理这种数据类型,所以我不确定最好的方法.我想知道使用触发器,但是当触发器更新行时会发生什么?那会再触发触发器等吗?
我试图从Project Euler解决问题#14,并编写了以下C#...
int maxColl = 0;
int maxLen = 0;
for (int i = 2; i < 1000000; i++) {
int coll = i;
int len = 1;
while (coll != 1) {
if (coll % 2 == 0) {
coll = coll / 2;
} else {
coll = 3 * coll + 1;
}
len++;
}
if (len > maxLen) {
maxLen = len;
maxColl = i;
}
}
Run Code Online (Sandbox Code Playgroud)
麻烦的是,它只是跑来跑去,似乎没有停止.
在寻找其他人解决问题的方法之后,我看到一个看起来非常相似,只是他用了long而不是int.我不明白为什么这是必要的,因为这个问题所涉及的所有数字都在int的范围内,但无论如何我都试过了.
将int更改为long使代码在2秒内运行.
有人能向我解释一下吗?
我一直在关注这篇F#ROP文章,并决定尝试在C#中重现它,主要是为了看看我是否可以.对这个问题的长度表示歉意,但是如果你熟悉ROP,那将很容易理解.
他从一个受F#歧视的联盟开始......
type Result<'TSuccess, 'TFailure> =
| Success of 'TSuccess
| Failure of 'TFailure
Run Code Online (Sandbox Code Playgroud)
...我翻译成一个抽象的RopValue类,以及两个具体的实现(注意我已经将类名更改为我更了解的类名)...
public abstract class RopValue<TSuccess, TFailure> {
public static RopValue<TSuccess, TFailure> Create<TSuccess, TFailure>(TSuccess input) {
return new Success<TSuccess, TFailure>(input);
}
}
public class Success<TSuccess, TFailure> : RopValue<TSuccess, TFailure> {
public Success(TSuccess value) {
Value = value;
}
public TSuccess Value { get; set; }
}
public class Failure<TSuccess, TFailure> : RopValue<TSuccess, TFailure> {
public Failure(TFailure value) {
Value = value;
}
public TFailure Value …Run Code Online (Sandbox Code Playgroud) 该方法的文档JsonSerializer.Deserialize中显示的返回类型均将返回类型显示为可为空。
如果您查看MS 文档中的反序列化示例,您会发现它们不一致,因为第一个和第三个将返回类型指定为可为空...
WeatherForecast? weatherForecast =
JsonSerializer.Deserialize<WeatherForecast>(jsonString);
Run Code Online (Sandbox Code Playgroud)
...而第二个示例缺少?,这意味着它不可为空。
通过实验,似乎只要您提供有效的 JSON(否则会出现异常),那么返回值始终是指定类型的非空对象。如果属性名称不匹配,则返回的对象将具有这些属性的默认值,但您永远不会获得空引用 - 或者至少,我找不到方法。
有谁能澄清一下吗?是否存在该方法可以返回null而不抛出异常的情况?如果不是,为什么返回类型指定为可为空?
谢谢
我正在读一本关于Linq的书,看到Distinct方法有一个需要比较器的重载.这对于我想要从集合中获取不同实体的问题是一个很好的解决方案,但是希望比较在实体ID上,即使其他属性不同.
根据这本书,如果我有一个Gribulator实体,我应该能够创建一个像这样的比较器......
private class GribulatorComparer : IComparer<Gribulator> {
public int Compare(Gribulator g1, Gribulator g2) {
return g1.ID.CompareTo(g2.ID);
}
}
Run Code Online (Sandbox Code Playgroud)
......然后像这样使用它......
List<Gribulator> distinctGribulators
= myGribulators.Distinct(new GribulatorComparer()).ToList();
Run Code Online (Sandbox Code Playgroud)
但是,这会给出以下编译器错误...
'System.Collections.Generic.List'不包含'Distinct'的定义和最佳扩展方法重载'System.Linq.Enumerable.Distinct(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEqualityComparer)'有一些无效的论点
参数2:无法从'LinqPlayground.Program.GribulatorComparer'转换为'System.Collections.Generic.IEqualityComparer'
我已经搜索了一下,并且已经看到很多使用这样的代码的例子,但没有关于编译器错误的抱怨.
我究竟做错了什么?另外,这是最好的方法吗?我想要一个一次性的解决方案,所以不要开始更改实体本身的代码.我希望实体保持正常,但只是在这一个地方,仅按ID进行比较.
谢谢你的帮助.
我正在使用带有Bootstrap的ASP.NET MVC5,并在Razor视图中为联系表单提供以下内容......
@using (Html.BeginForm("Contact", "Home", FormMethod.Post, new {role = "form"})) {
<div class="form-group">
@Html.LabelFor(model => model.theirname)
@Html.TextBoxFor(model => model.theirname, new {@class = "form-control", placeholder = "Enter your name"})
<div>@Html.ValidationMessageFor(model => model.theirname, "You must enter your name")</div>
@Html.LabelFor(model => model.theiremail)
@Html.TextBoxFor(model => model.theiremail, new {@class = "form-control", placeholder = "Enter your email"})
<div>@Html.ValidationMessageFor(model => model.theiremail, "You must enter your email address")</div>
@Html.LabelFor(model => model.message)
@Html.TextAreaFor(model => model.message, new {@class = "form-control", placeholder = "Enter message", cols = 40, rows = 5}) …Run Code Online (Sandbox Code Playgroud) 我正在开发一个人们可以访问音频和视频文件的网站.我有下载文件的代码,包括两个动作方法如下...
public ActionResult GetAudioFile(int id) {
return GetFile(id, true);
}
public ActionResult GetVideoFile(int id) {
return GetFile(id, false);
}
private ActionResult GetFile(int id, bool isAudio) {
// Code to get info about the file, etc omitted for clarity
string downloadFileName = // full path to audio/video file
byte[] bytes = GetFileBytes(fileName); // also omitted
return File(bytes, (isAudio ? "audio/mpeg" : "video/mp4"), downloadFileName + (isAudio ? ".mp3" : ".mp4"));
}
Run Code Online (Sandbox Code Playgroud)
这两个都工作正常,我可以下载任何类型的文件.
我现在想要添加两个Razor视图,一个用于监听音频文件,另一个用于观看视频.我在音频视图上做了以下操作,它工作正常......
<audio src='@Url.Action("GetAudioFile", "Search", new {ID = @Model.ID})'
controls preload="auto"></audio> …Run Code Online (Sandbox Code Playgroud) 我有一个 Visual Studio 解决方案,它有(以及测试项目等)两个项目,最终将作为 Nuget 包。ProjectA 没有任何依赖项,但 ProjectB 依赖于 ProjectA。该解决方案位于 GitHub 存储库中,设置了构建两个项目并将其发布到 Nuget 的工作流程。
在 Visual Studio 中,我有一个从 ProjectB 到 ProjectA 的项目引用,这使得开发和测试变得容易。但是,当我发布时,我希望 ProjectB 对 ProjectA 具有 Nuget 包依赖关系,而不是在包中包含 DLL。
是否有捷径可寻?我看到了这个答案,但它似乎非常手动。我希望有某种方法可以作为构建和发布工作流程的一部分来做到这一点。
我正在努力学习表达,主要是为了我自己的教育.我正在尝试研究如何构建一个表达比某些东西更复杂的表达式a+b等等.
我将逐步采取这一步骤,这样你就可以看到我是如何构建它的.请随意评论我的方法的任何方面,尽管实际问题出现在第三个代码块上.
我理解如何创建一个将输入除以2的函数:
// Set up a parameter for use below
ParameterExpression x = Expression.Parameter(typeof(double), "x");
Expression two = Expression.Constant((double)2);
Expression halve = Expression.MakeBinary(ExpressionType.Divide, x, two);
// Test it
double halfOfTwenty = Expression.Lambda<Func<double, double>>(halve, x).Compile()(20);
Run Code Online (Sandbox Code Playgroud)
我还研究了如何制作一个计算sin(x)的表达式:
Expression sine = Expression.Call(typeof(Math).GetMethod("Sin"), x);
// Test it
double sinePiOverTwo = Expression.Lambda<Func<double, double>>(sine, x).Compile()(Math.PI / 2);
Run Code Online (Sandbox Code Playgroud)
我现在想做的是创建一个计算sin(x/2)的表达式.我可以这样做......
Expression sineOfHalf = Expression.Call(typeof(Math).GetMethod("Sin"), halve);
Run Code Online (Sandbox Code Playgroud)
...但理想情况下,我想重用我现有的正弦表达式,而不是创建一个新表达式.
我确信这很简单,但对于这个领域的新手,我发现它很难.有谁能告诉我怎么做?我查看了Expression类,但显然忽略了我需要的方法.
我是 ASP.NET Core 的新手,并且缺少我经常使用的一项功能。
在设置新的 ASP.NET MVC 项目(Core 前)时,我将打开项目属性,然后从 Web 选项卡中取消选中“编辑并继续”复选框。这样,我就可以运行我的项目,在浏览器中浏览它,在 VS 中停止调试,它会继续运行。
这意味着我可以进行更改、重新编译和重新加载页面,而无需再次开始调试。除非我真的需要中断代码,否则这比每次更改后启动新的调试会话要快得多。
这可以在 ASP.NET Core 中完成吗?我还没有设法找到方法。