小编Eri*_*ikE的帖子

使用Linq检索基于C#的List <>项的索引

这是一个非常简单的问题,我有一个具有字段名称"ID"的对象列表.

如果我知道ID,如何检索列表中对象的索引?

例:

CUSTOM_OBJECTS test = new CUSTOM_OBJECTS{ID=50};
List<CUSTOM_OBJECTS> List = new List<CUSTOM_OBJECTS>();
List.Add(test);
Run Code Online (Sandbox Code Playgroud)

我想检索列表中ID = 50的对象的索引,在本例中为0.

c# linq

4
推荐指数
1
解决办法
609
查看次数

合并SQL Server中的日期间隔

我有以下数据:

StartDate   |  EndDate
-------------------------
1982.03.02  |  1982.09.30 
1982.10.01  |  1985.01.17 
1985.06.26  |  1985.07.26 
1985.07.30  |  1991.12.31 
1992.01.01  |  1995.12.31 
1996.01.01  |  2004.05.31 
2004.06.05  |  2006.01.31 
2006.02.01  |  2011.05.20              
Run Code Online (Sandbox Code Playgroud)

我需要合并任何相邻的区间(开始日期和结束日期都包含在区间中,因此结束于2003.05.06的区间与2003.05.07开始的区间相邻),所以在这种情况下,结果集合应该:

StartDate   |  EndDate
-------------------------
1982.03.02  |  1985.01.17 
1985.06.26  |  1985.07.26 
1985.07.30  |  2004.05.31 
2004.06.05  |  2011.05.20              
Run Code Online (Sandbox Code Playgroud)

对我来说,显而易见的方法是使用游标迭代集合,并逐行构造结果集.但是,此功能将位于可能在一天内在重负载的服务器上被调用数千次的代码内,因此我不希望出现任何性能问题.任何数据集都很小(20行顶部),数据范围很大,因此任何生成范围内所有日期的解决方案都是不可行的.

有没有更好的方式我没有看到?


初始化代码(来自Damien的回答):

CREATE TABLE Periods (
    StartDate datetime NOT NULL CONSTRAINT PK_Periods PRIMARY KEY CLUSTERED,
    EndDate datetime NOT NULL
)

INSERT INTO Periods(StartDate,EndDate)
SELECT '19820302', '19820930'
UNION ALL SELECT '19821001', '19850117'
UNION ALL …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

4
推荐指数
2
解决办法
6993
查看次数

Javascript数组/对象语法失败

为什么我用这段代码得到这个错误:Uncaught SyntaxError: Unexpected token {在第1行.

var cube_points = {
    {'x' : 100, 'y' : 100, 'z' : 100},
    {'x' : 100, 'y' : 100, 'z' : -100},
    {'x' : -100, 'y' : 100, 'z' : -100},
    {'x' : -100, 'y' : 100, 'z' : 100},
    {'x' : 100, 'y' : -100, 'z' : 100},
    {'x' : 100, 'y' : -100, 'z' : -100},
    {'x' : -100, 'y' : -100, 'z' : -100},
    {'x' : -100, 'y' : -100, …
Run Code Online (Sandbox Code Playgroud)

javascript arrays object object-literal

4
推荐指数
2
解决办法
247
查看次数

执行INNER JOIN时重复的结果

我有两个简单的表,我想执行INNER JOIN,但问题是我得到重复(对于列str1和str2)结果:

CREATE TABLE #A (Id INT, str1 nvarchar(50), str2 nvarchar(50))
insert into #A  values (1, 'a', 'b')
insert into #A  values (2, 'a', 'b')

CREATE TABLE #B (Id INT, str1 nvarchar(50), str2 nvarchar(50))
insert into #B values (7, 'a', 'b')
insert into #B  values (8, 'a', 'b')

select * from #A a
INNER JOIN #B b ON a.str1 = b.str1 AND a.str2 = b.str2  
Run Code Online (Sandbox Code Playgroud)

当我真正想要2时,它给了我4条记录.

我得到了什么:
id | str1 | STR2 | id | str1 | str2
1 | …

sql-server inner-join cartesian-product sql-server-2008

4
推荐指数
1
解决办法
9327
查看次数

从IIS 7上的经典ASP创建COM +组件时"Server.CreateObject失败"

我在Windows Server 2008 R2 Standard中的IIS 7上运行了一个经典的ASP应用程序.

它在当天的某个时刻工作正常,但是在没有任何代码更改的情况下,它在实例化COM +组件时开始抛出以下错误:

MyObject = Server.CreateObject("MyCustomComponent.MyCustomObject")
Run Code Online (Sandbox Code Playgroud)

服务器对象错误'ASP 0177:80004005'

Server.CreateObject失败

/path/script.asp,第xx行

80004005

可能是什么问题呢?我做了一个互联网搜索,发现了几十个可能的答案,其中没有一个似乎与问题有任何关系.我知道我正在使用正确的对象名称 - 它刚刚工作了一段时间.什么也没有变!我花了差不多2个小时试图解决这个问题并且空洞.

iis-7 com+ createobject asp-classic

4
推荐指数
1
解决办法
2万
查看次数

如何在SQL Server 2008中从今天开始一个月前?

我在上个月写了一个查询,但时间为零(如果今天是2013-05-21那么我想得到2013-04-21 00:00:00.000).

所以我尝试过:

select (dateadd(month,datediff(month,(0),getdate())-1,(0)));
Run Code Online (Sandbox Code Playgroud)

但我得到了上个月的第一天.

然后我尝试了:

select dateadd(month, -1, GETDATE());
Run Code Online (Sandbox Code Playgroud)

我得到了正确的一天,但我也得到了当前时间(2013-04-21 11:41:31.090),我希望时间为零.

那么我的查询应该如何得到类似的东西:2013-04-21 00:00:00.000

提前致谢.

sql-server sql-server-2008

4
推荐指数
2
解决办法
7万
查看次数

代码合同.net - 替代品

最近,我开始使用.net的代码合同.在我看来,代码签约本身的想法很棒,但实现起来非常不愉快.

我不喜欢它的主要原因是:

  • 我只能使用像Contract.Require()我的程序里面的方法.ContractAbbreviators有很多限制(比如,我不能将它们放在一个单独的程序集中,我不能使用参数),这使得它们的可用性降低.没有属性,也没有扩展方法,所以我的代码变得非常冗长.例如,如果我只是想检查我的返回值类型Dictionary<string, string>是否为null,我需要添加一个怪物,如Contract.Ensure(Contract.Result<Dictionary<string, string>> != null).它甚至都不可读.
  • 静态分析仪发出了很多错误警报,我花了更多时间来关闭它而不是解决实际问题.
  • 这非常慢.尽管它有一些缓存,但即使是一个小项目也需要几分钟的时间来分析,这使得增量修复变得毫无用处.这只需要太长时间.
  • 有一些错误ccrewriter- 它不能咀嚼一半的程序集,并且它无法在.net 4.5运行时中存活.net 4.0程序集.
  • 有运行时/静态检查器二元论.当我刚刚开始时,我认为这很简单Debug.Assert- 你只需将它们添加到你认为需要的任何地方.但事实证明,我需要向静态检查器证明一切,这是肯定的,但检查器有时是愚蠢的,无法解决许多明显的代码结构(如while).并且没有任何工具可以对分析仪说"我知道我在做什么,只是忽略这违反合同".
  • 你无法联系条件.例如,没有办法向静态分析器解释如果我检查string.NotNullOrEmpty这包括string != null.或者,如果我有自己的大程序检查文件路径,我无法向分析器解释它肯定不是null而不是空的.该ContractAbbreviator属性帮助一点点,但所有这些冗长去那里,它仍然看起来肮脏和愚蠢的.
  • 代码合同的开发速度非常慢,即使它现在是开源的,据我所知,代码库处于不良状态.

代码合同是否有任何先进的替代方案,缺陷较少?

.net code-contracts

4
推荐指数
1
解决办法
1302
查看次数

使用 Jest 在 Node 中模拟动态需求

给定一个需要从父/引用包的根动态加载依赖项的 npm 包,并且该位置直到运行时才知道,它必须执行动态要求:

// config-fetcher.js
const path = require('path');
const getRunningProjectRoot = require('./get-running-project-root');'
module.exports = filename =>
   require(path.resolve(getRunningProjectRoot(), filename));
Run Code Online (Sandbox Code Playgroud)

(不能保证模块会在node_modules. 它可以被符号链接或全局加载。所以它不能使用静态需求。)

这是从实际代码中简化的,因此除非您知道一种相对于正在运行的项目根目录非动态地要求文件的方法,否则必须采用这种方式。

现在,为了测试这一点,我不想依赖任何实际在磁盘上的文件。然而,Jest 似乎不会让你模拟一个不存在的文件。所以如果我试试这个:

const mockFileContents = {};
jest.mock('/absolute/filename.blah', () => mockFileContents);
// in preparation for wanting to do this:
const result = require('./config-fetcher')('/absolute/filename.blah');
expect(result).toBe(mockFileContents);
Run Code Online (Sandbox Code Playgroud)

然后我收到一个错误jest-resolve,文件Resolver.resolveModule抛出Error: Cannot find module '/absolute/filename.blah'.

我需要测试这个动态需求模块的一些功能,因为它处理相对路径与绝对路径的一些情况,并允许您通过符号指定一个特殊路径,例如一个 applicationRoot,所以该模块config-fetcher执行努力工作而不是来电者。

任何人都可以提供有关如何测试此模块或如何重组以便不需要动态需求或它们更易于测试的指导吗?

mocking node.js jestjs

4
推荐指数
1
解决办法
2343
查看次数

应该编写什么代码来接受大小写选择?

我是初学c ++并编写一个程序,接受用户选择并根据它行事......我唯一的问题是当用户输入大写选择时......程序将其视为错误的选择...就像' e'是输入数字的选择..如果用户输入'E',程序将不会显示"输入数字"消息.我可以修复它吗?我尽我所能,但我不能让它工作..哦,我怎么能在Switch案件中添加大写?这是代码的一部分,负责根据用户的选择和行动.

 #include <iostream>
 #include <cstring>
 using namespace std;

 int main(){

 char choice ;

 for(;;){
    do{
      cout << endl ;
      cout << "(e)nter." << endl ;
      cout << "(d)isplay." << endl;
      cout << "(u)pdate." << endl ;
      cout << "(r)eset. " << endl;
      cout << "(q)uit." << endl;
      cout << endl;
      cout << "Choose one : " ;
      cin >> choice ;

      if( !strchr("edurq",choice) && (choice>=97&&choice<=122) ){
         cout << "Enter e,d,u or q " << endl;}

      else if( !strchr("EDURQ",choice) …
Run Code Online (Sandbox Code Playgroud)

c++ lowercase uppercase

3
推荐指数
2
解决办法
8682
查看次数

风格问题:如果阻止功能?

假设我有一个只应该定义一些常量才能执行的函数.以下哪一项会更好

选项1:将所有函数调用包装在if块中:

if(defined('FOO_BAR_ENABLED')) {
   foobar();
}
Run Code Online (Sandbox Code Playgroud)

我想通过这种方式意图更清晰,但每次调用函数时都需要检查常量.

选项2:检查函数本身的常量:

function foobar() {
  if(!defined('FOO_BAR_ENABLED')) {
    return;
  }
  //do stuff 
}
Run Code Online (Sandbox Code Playgroud)

这种方式需要较少的代码行,并且必须检查常量.但是,我发现在没有实际执行任何操作时看到对此函数的调用会让人感到困惑.思考?

language-agnostic conditional coding-style function

3
推荐指数
1
解决办法
141
查看次数