我有以下XML源结构:
<turnovers>
<turnover repid="1" amount="500" rate="0.1"/>
<turnover repid="5" amount="600" rate="0.5"/>
<turnover repid="4" amount="400" rate="0.2"/>
<turnover repid="1" amount="700" rate="0.05"/>
<turnover repid="2" amount="100" rate="0.15"/>
<turnover repid="1" amount="900" rate="0.25"/>
<turnover repid="2" amount="1000" rate="0.18"/>
<turnover repid="5" amount="200" rate="0.55"/>
<turnover repid="9" amount="700" rate="0.40"/>
</turnovers>
Run Code Online (Sandbox Code Playgroud)
我需要一个XSL:value-of select语句,它将返回给定代表ID的rate属性和amount属性的乘积之和.所以对于代表5,我需要((600 x 0.5)+(200 x 0.55)).
我有一系列的价值观.他们都可以平等......或不.因此,使用XQuery,我想获得序列中最频繁的项目.
let $counter := 0, $index1 := 0
for $value in $sequence
if (count(index-of($value, $sequence)))
then
{
$counter := count(index-of($value, $sequence)) $index1 := index-of($value)
} else {}
Run Code Online (Sandbox Code Playgroud)
我无法做到这一点,所以我想我做错了什么.
在此先感谢你能给我的任何帮助.
我有一个带有一些函数的类,它们实际上只是'helper'方法,客户端代码可以用其他公共访问器属性/方法来完成,我还没有决定是否应该将它们定义为具有getter的属性,实例将实例作为参数的方法或静态方法.另外,我还从类中提取了一个接口,除了构造之外,它几乎用在任何地方,以允许我的代码使用针对接口实现的任何类.
问题是,从设计的角度来看哪个最好?例如,作为从此类获取首字母的方法:
class Person : IPerson {
private string name;
public string Name { get { return this.name; } }
// Property with getter
public string Initial { get { return this.name.Substring(0,1); } }
// Instance method
public string GetInitial { return this.name.Substring(0,1); }
// Static method
public static string GetInitial(IPerson person) {
return person.Name.Substring(0,1);
}
}
Run Code Online (Sandbox Code Playgroud)
该属性适用于更短,更易读的客户端代码,但是需要任何针对IPerson实现的人编写自己的实现,就像实例方法一样.
静态方法意味着实现类不需要自己编写,我的代码可以保证如何根据名称确定初始化,但这意味着它不能在接口上,而客户端代码更冗长一点.
它是否仅仅归结为是否允许实现类来指定如何计算辅助方法是一个好主意?
编辑:轻微一点,为什么不让SO添加最佳实践标签?
例如,如果我有两个列表,我会这样做:
foreach (Item item1 in lists[0])
foreach (Item item2 in lists[1])
// Do something with item1 and item2
Run Code Online (Sandbox Code Playgroud)
或者,如果我有三个,我会这样做
foreach (Item item1 in lists[0])
foreach (Item item2 in lists[1])
foreach (Item item3 in lists[2])
// Do something with item1, item2, and item3
Run Code Online (Sandbox Code Playgroud)
但如果我在编译时不知道lists
集合中有多少列表,我怎样才能轻松迭代每个排列?
AC#解决方案是理想的,但是任何演示合适算法的语言的解决方案都很方便.
一个好的二维示例是电子表格中的列列表和行列表,我需要在每个单元格上进行处理.然而,这是一个n维问题.
例如:
struct Foo
{
int bar;
int (*baz)(int);
};
int testFunc(int x)
{
return x;
}
Foo list[] = {
{ 0, &testFunc },
{ 1, 0 } // no func for this.
};
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我宁愿将函数直接放入list []初始化器,而不是使用指向其他地方声明的函数的指针; 它将相关代码/数据保存在同一个地方.
有办法做到这一点吗?我尝试了我能想到的每一种语法,无法让它发挥作用.
如何从C#代码打开文件进行编辑,即相当于用户右键单击它并选择"编辑"而不是"打开"?我已经得到Process.Start(<filename>)
了相当于'Open'的功能,但在这种情况下我特别需要'Edit'选项.
如果没有更简单的方法,我假设我可能需要检查注册表中与文件类型相关的"编辑"操作并以某种方式调用该操作,但我不确定在哪里查看或如何可靠地做到这一点.
有人知道这样做的最好方法吗?
这感觉它应该很容易,但我只是看不到让它工作的方法.
Type propType = propertyInfo.PropertyType;
switch (propType)
{
case typeof(byte): // Can't do this, 'A constant value is expected'
// Do something
break;
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过
private const byteType = typeof(byte);
Run Code Online (Sandbox Code Playgroud)
然后打开它,但是由于同样的原因,这行代码无法编译.
所以,问题是:如何打开实例Type
?
如果我有一个我知道可能无限递归的方法,但我无法可靠地预测哪些条件/参数会导致它,那么在C#中执行此操作的好方法是什么:
try
{
PotentiallyInfiniteRecursiveMethod();
}
catch (StackOverflowException)
{
// Handle gracefully.
}
Run Code Online (Sandbox Code Playgroud)
显然在主线程中你不能这样做,但我已经被告知有几次使用线程或AppDomain可以做到这一点,但我从未见过一个有效的例子.有人知道这是如何可靠地完成的吗?
我试图通过参数中的内容过滤XML.什么是正确的sintax匹配只有那些dep_code等于'某事'或在这种情况下$ department?
XML结构是
<course>
<dep_code></dep_code>
<catalog_number></catalog_number>
<course_group></course_group>
<term></term>
<offered></offered>
<course_type></course_type>
<course_level></course_level>
<title></title>
<course_number></course_number>
<meeting_text></meeting_text>
<faculty_text></faculty_text>
<description></description>
<prerequisites></prerequisites>
</course>
Run Code Online (Sandbox Code Playgroud)
参数定义
<xsl:param name="department" select="'All'" />
Run Code Online (Sandbox Code Playgroud)
代码我尝试过 我试过这个:
<xsl:template match="course/dep_code/{$department}">
Run Code Online (Sandbox Code Playgroud)
这个:
<xsl:template match="course/dep_code/$department">
<xsl:template match="course/dep_code eq $department">
Run Code Online (Sandbox Code Playgroud)
我继续得到如下语法错误:
提前致谢
继之前的问题之后,这更多是关于xsl语法.我想将URL变量的一部分拆分为xsl中的新变量.当变量位于URL的一部分时,此代码有效.例如:
http://www.mysite.com/test.aspx?aVar=something&bVar=somethingMore&cVar=yetMoreStill
<xsl:variable name="testVar" select="substring-after($url, 'bVar=')"/>
<xsl:value-of select="substring-before($testVar, '&')" />
Run Code Online (Sandbox Code Playgroud)
问题是变量有时可能位于URL的末尾(我无法控制)EG:
http://www.mysite.com/test.aspx?aVar=something&bVar=somethingMore
所以上面的代码失败了.有没有我可以允许两次出现?结束游戏我只是试图获得bVar的价值,无论它在URL中的位置.谢谢.
这是我的XSL电子表格:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml" encoding="utf-8" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:element name="outer">
<xsl:apply-templates select="elements"/>
</xsl:element>
</xsl:template>
<xsl:template match="element1">
<xsl:element name="output1">
<xsl:element name="output1.5" />
</xsl:element>
</xsl:template>
<xsl:template match="element2">
<xsl:element name="output2"/>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
输入XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<elements>
<element1>value1</element1>
<element2>value2</element2>
</elements>
Run Code Online (Sandbox Code Playgroud)
输出不会根据输出XML层次结构缩进.这是实际输出(注意output1.5和output1没有正确缩进):
<outer>
<output1>
<output1.5/>
</output1>
<output2/>
</outer>
Run Code Online (Sandbox Code Playgroud)