我有一个历史表来捕获某个对象的更新,除了其他信息之外,还会捕获此更新发生的时间.我想这样做是SELECT在MIN(LogDate)对应于某一ActionTaken列.
更具体地说,历史表可能有其他(更近期)行ActionTaken = 1,但我想捕获日期ActionTaken 变为 1.
例:
SELECT MIN(LogDate) AS FirstActionDate
FROM HistoryTable
WHERE ID = 123
AND FirstActionTaken = 1
SELECT MIN(LogDate) AS SecondActionDate
FROM HistoryTable
WHERE ID = 123
AND SecondActionTaken = 1
SELECT MIN(LogDate) AS ThirdActionDate
FROM HistoryTable
WHERE ID = 123
AND ThirdActionTaken = 1
Run Code Online (Sandbox Code Playgroud)
这很好用,我收到了正确的日期没有问题.当我遇到麻烦,然后要select对MAX(LogDate)从该组:
SELECT MAX(LogDate) AS LastActionDate
FROM HistoryTable
WHERE ID = 123
AND LogDate IN
(
( SELECT MIN(LogDate) …Run Code Online (Sandbox Code Playgroud) 假设您有一个字符串("haystack")和一个要搜索的子字符串("needle"):
string haystack = "D0B11234 AM21ANP AM23AN1";
string needle = "AM21AN";
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种在寻找子字符串后找到索引或子字符串的方法.
调用IndexOf()返回针的起始位置,index = 9在这种情况下:
int index = haystack.IndexOf(needle);
Run Code Online (Sandbox Code Playgroud)
我最初的想法是使用LastIndexOf(),但它返回大海捞针最后一次出现的起始索引.
正如在这个类似的问题(以及可能的其他问题)中所回答的那样,如果你想立即找到后面的字符needle,则需要index按照针的长度递增,如下所示:
int index = haystack.IndexOf(needle);
int indexAfterNeedle = index + needle.Length;
Run Code Online (Sandbox Code Playgroud)
是否存在一种方法(现有的,或者可能很容易扩展),除了index + needle.Length每次允许您确定子字符串的结束索引时都要键入?
拿一个类Player,它(当前)有一个类型的属性Role:
public class Player
{
public string Name { get; set; }
public int Health { get; protected set; }
public Role Role { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
哪里Role有几个不同的价值观:
public class Role
{
public double DamageModifier { get { return _damageModifier; } }
public double DefenseModifier { get { return _defenseModifier; } }
public double HealthModifier { get { return _healthModifier; } }
private double _damageModifier;
private double _defenseModifier;
private double _healthModifier;
public Role(double …Run Code Online (Sandbox Code Playgroud)