如何在C#中将任意值舍入到10个区间?例如,如果我有11,我希望它返回10,如果我有136,那么我希望它返回140.
我可以轻松地手工完成
return ((int)(number / 10)) * 10;
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一种内置算法来完成这项工作,比如Math.Round().我不想手工做的原因是我不想在我的项目中编写相同或类似的代码,即使是像上面那样简单的东西.
http响应头中的Access-Control-Max-Age和Cache-Control有什么区别?
Access-Control-Max-Age:1728000
Cache-Control:max-age=21600, public
Run Code Online (Sandbox Code Playgroud)
我觉得他们没有提到同一件事,因为他们经常一起出现,有时候会有不同的价值观.
如果他们这样做既出现在HTTP头中,但包含不同的值,这将是有效的?
我正在使用 Linq 更新表中的单个列,请使用下面的虚构表格。
MyTable(PKID、ColumnToUpdate、SomeRandomColumn)
var row = (from x in DataContext.MyTable
where b.PKID == 5
select x).FirstOrDefault();
row.ColumnToUpdate = 20;
DataContext.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
这会将专栏更新为预期的内容,这并不奇怪。但是,当我检查生成的 SQL 命令时,它会执行以下操作:
UPDATE [dbo].[MyTable ]
SET [ColumnToUpdate ] = @p2
WHERE ([PKID] = @p0) AND ([SomeRandomColumn] = @p1)
Run Code Online (Sandbox Code Playgroud)
这是执行更新,但前提是所有列都与实体期望的值匹配,而不是单独引用主键列。
如果数据库列被另一个进程更改,这在这个特定项目中是非常可行的;例如。在获取要操作的行、计算要设置值的更改以及以一批行形式发出更新命令之间存在一个窗口。在这种情况下,查询将引发异常,从而导致部分更新,除非我捕获、重新加载数据并重新发送单个查询。它还有一个缺点,即行信息可能非常大(例如,包含 HTML 标记),并且整个信息都会传递给 SQL,并在处理较大批次时减慢系统速度。
有没有办法让 Linq / Entity 仅根据Where 子句中的 PK 列发出更新命令?
c# 中是否有运算符用于检查是否有多个值匹配,例如简化此操作:
if (a == b && b == c)
Run Code Online (Sandbox Code Playgroud)
变成这样的东西,这是无效的
if (a == b == c)
Run Code Online (Sandbox Code Playgroud)
只是好奇比什么都重要。