小编Run*_* FS的帖子

在XDocument中查找元素?

我有一个简单的XML

<AllBands>
  <Band>
    <Beatles ID="1234" started="1962">greatest Band<![CDATA[lalala]]></Beatles>
    <Last>1</Last>
    <Salary>2</Salary>
  </Band>
  <Band>
    <Doors ID="222" started="1968">regular Band<![CDATA[lalala]]></Doors>
    <Last>1</Last>
    <Salary>2</Salary>
  </Band>
</AllBands>
Run Code Online (Sandbox Code Playgroud)

但是,

当我想要到达"门乐队"并更改其ID时:

  using (var stream = new StringReader(result))
            {
                XDocument xmlFile = XDocument.Load(stream);

                var query = from c in xmlFile.Elements("Band")

                            select c;
                             ...
Run Code Online (Sandbox Code Playgroud)

query 没有结果

如果我xmlFile.Elements().Elements("Band")这样写 ,它会找到它.

问题是什么 ?

需要来自Root的完整路径吗?

如果是这样,为什么它没有指定就可以工作AllBands

XDocument导航是否要求我知道所需元素的完整级别结构?

.net c# xml linq-to-xml

49
推荐指数
5
解决办法
13万
查看次数

F#相当于C#typeof(IEnumerable <>)

我有一段代码,我需要弄清楚一个给定的类型是否实现IEnumerable<T>(我不关心T)

我试过了(t:System.Type万一你想知道)

let interfaces = t.GetInterfaces()
let enumerbale = 
    interfaces.Any(fun t -> 
        t.GetGenericTypeDefinition() = typeof<IEnumerable<>>
    ) 
Run Code Online (Sandbox Code Playgroud)

但是这不会编译(编译不喜欢<>).然后我试过了

let interfaces = t.GetInterfaces()
let enumerbale = 
    interfaces.Any(fun t -> 
        t.GetGenericTypeDefinition() = typeof<IEnumerable<'a>>
    )
Run Code Online (Sandbox Code Playgroud)

但得到一个警告,'a是对obj的约束.我不想弄清楚是否IEnumerable<obj>已实施但是IEnumerabl<>.

任何人都知道解决方案,顺便也可以对上面的代码发表评论.

reflection f# c#-to-f#

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

如何增加Postman客户端请求超时

我要求邮递员提供API并在2分钟后得到响应,这很好,因为业务逻辑很复杂.但问题是邮递员正在给予

502错误的网关

之后,我检查了业务逻辑,发现它成功执行没有任何错误.

所以我关心的是如何增加请求时间.

postman

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

活动模式和成员约束

对于内联函数,可以创建一个约束,如:

let inline implicit arg =
  ( ^a : (static member op_Implicit : ^b -> ^a) arg)
Run Code Online (Sandbox Code Playgroud)

在参数上要求给定的运算符或成员.是否有基于相似的东西匹配的方法?

我想创建一个活动模式,其中传递给方法的任何参数与内联函数的约束匹配,如上所述触发该函数,其他所有内容都作为一些错误管理的一部分结束.

f# inline constraints active-pattern

13
推荐指数
1
解决办法
1250
查看次数

任何具有测试功能的BNF IDE

我正在研究一门新语言,在编写语法时,我希望能够测试语法的完整性,冲突和类似情况.我并不是真的关心底层解析器生成器(但是.NET的一个是优选的)

所以功能列表简称为:

  • 文本编辑器构建功能
  • 语法/语义错误报告
  • 冲突报道
  • 语法测试功能(即用于在预期语法中编写代码以验证语法定义的正确性的窗口)

一个名为Irony的CodePlex项目确实有类似于我要求的东西,但不支持将语法编写为必需的BNF.

.net language-design bnf parser-generator

11
推荐指数
2
解决办法
2146
查看次数

生产力研究材料

在讨论哪些平台用于哪些应用程序时(特别是我们讨论了c ++,java,c#和f#),我们尝试在各种平台/使用上述语言的基础上,找到类似应用程序的生产力(实际拥有成本)的科学质量研究.谁知道这样的研究?

编辑:我看到有几个人评论说,所要求的研究不存在/不能执行.所以我想我已经澄清了,因为我要求的那种研究是可执行的(而且我知道我已经读过一项调查但已经忘记了来源)

我不是要求一项研究得出结论,对于任何"钉子"来说,哪种平台/语言是最有效的"锤子".我要求进行研究,给出一系列预先存在(如所有研究所有),例如硬件平台类型,具有类似工作能力的应用类型,调查工具(特别是语言)及其对生产力的影响.我不是要开始宗教战争,这就是为什么我不是要求人们的意见,而是科学的质量研究:)

c# java

11
推荐指数
1
解决办法
844
查看次数

使JSON响应更小......只是一个想法

只是一个想法......并且想知道Gzipped JSON是否已经涵盖了这一点.

但是说你在响应中有一个游戏对象列表:

game = {
    name: 'Randomer Quest!',
    description: 'Randomer's Quest is a brilliant game!',
    activated: true,
    points: 10,
    thumb: 'randomer-quest.jpg'
};
Run Code Online (Sandbox Code Playgroud)

当你json_encode这个,它变成151 bytes:

{"games": [{"name":"Randomer Quest!","description":"Randomer's Quest is a brilliant game!","activated":true,"points":10,"thumb":"randomer-quest.jpg"}]}
Run Code Online (Sandbox Code Playgroud)

好的......但是如果你有大约100个游戏的列表怎么办?这是关于13,913 bytes...但我们真的需要继续声明这些属性吗?我知道你可以解码它并循环它(神奇的)但是如果我们对它更加智能并在一个单独的对象中声明属性然后有一个数据数组呢?我们必须预先填充通常不存在的房产,但我仍然认为它值得.

像这样的东西:

{
"games": {
    p: ["name", "description", "activated", "points", "thumb"],
    d: [
        ["Randomer Quest!", "Randomer's Quest is a brilliant game!", true, 10, "randomer-quest.jpg"],
        ["Randomer Quest!", "Randomer's Quest is a brilliant game!", true, 10, "randomer-quest.jpg"]
    ]
}
Run Code Online (Sandbox Code Playgroud)

}

P是属性,D是数组中的数据.之后我们有:9,377 bytes67%的大小! …

javascript ajax json

10
推荐指数
2
解决办法
1613
查看次数

在string.Split()之后有任何更好的TRIM()方法吗?

注意到一些代码如

string[] ary = parms.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
for( int i = 0; i < ary.Length; i++)
       ary[i] = ary[i].Trim();
Run Code Online (Sandbox Code Playgroud)

工作正常,但想知道是否有更好的方法一步完成

.net c#

10
推荐指数
1
解决办法
4852
查看次数

"转动"IEnumerable <IEnumerable <T >> 90度

我正在寻找的是一个基本的操作(我肯定有一个名字,我只是没有意识到atm).我有一个矩阵像:

{1,2,3}

{A,N,F}

{7,8,9}

我想改变它

{1,A,7}

{2,N,8}

{3,F,9}

(以上只是对象的标识符而不是实际值.实际对象属于同一类型且无序)

我更喜欢它的声明性解决方案,但速度是一个因素.我将不得不转动相当多的表(每分钟100k个单元),而慢速版将在关键路径上.

但是我对可读解决方案仍然更感兴趣.我正在寻找下面的替代解决方案.(换句话说,我不是指变化,而是一种不同的方法)

var  arrays = rows.Select(row => row.ToArray());
var cellCount = arrays.First().Length;
for(var i = 0;i<cellCount;i++){
  yield return GetRow(i,arrays);
}

IEnumerable<T> GetRow(int i,IEnumerable<T[]> rows){
  foreach(var row in rows}{
     yield return row[i]; 
  }
}
Run Code Online (Sandbox Code Playgroud)

在两个几乎同样可读的解决方案中,我会更快,但可读性在速度之前

编辑 它将始终是一个方阵

c# linq algorithm declarative

8
推荐指数
2
解决办法
1336
查看次数

MSBuild中ProjectReference的配置

是否可以在MSBuild中设置ProjectReference的配置?

场景:我有一个构建脚本(Web部署),它具有许多配置,其中唯一的区别与它们的部署方式有关,而不是自己构建.我不愿意为我的解决方案/项目维护配置,这些配置是作为部署过程的一部分构建的,因为我需要这些配置进行部署.我能以任何方式完成这项任务吗

msbuild msbuild-projectreference

8
推荐指数
2
解决办法
1666
查看次数