我们获得了一份示例文档,并且需要能够为供应商准确地再现文档的结构.但是,我对C#如何处理命名空间感到有点迷茫.以下是该文档的示例:
<?xml version="1.0" encoding="UTF-8"?>
<Doc1 xmlns="http://www.sample.com/file" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sample.com/file/long/path.xsd">
<header>
<stuff>data</stuff>
<morestuff>data</morestuff>
</header>
</Doc1>
Run Code Online (Sandbox Code Playgroud)
我通常会这样做是加载一个空白文档,然后开始填充它:
XmlDocument doc = new XmlDocument();
doc.LoadXml("<Doc1></Doc1>");
// Add nodes here with insert, etc...
Run Code Online (Sandbox Code Playgroud)
一旦我开始编写文档,如何将命名空间和模式放入Doc1元素中?如果我通过将它们包含在LoadXml()中来开始使用Doc1元素中的命名空间和模式,那么所有子元素都具有命名空间 - 这就是禁忌.该文件被拒绝.
换句话说,我必须如图所示完全生产它.(而且我宁愿不只是在C#中编写文本到文件,并希望它是有效的XML).
给出一个像这样的元素列表:
int[] ia = new int[] { -4, 10, 11, 12, 13, -1, 9, 8, 7, 6, 5, 4, -2,
6, 15, 32, -5, 6, 19, 22 };
Run Code Online (Sandbox Code Playgroud)
Linq是否有一种简单的方法可以按照"从-1到下一个负数(或列表耗尽)中选择元素"的方式做什么?-1的成功结果是(-1,9,8,7,6,5,4).使用-2将给出结果(-2,6,15,32).
不是作业问题.我只是在寻找一个实现使用bool,一for环,和if如果有一个更清洁的方式做到这一点不知道.
试图解决:
我想我偶然发现了一个解决方案,我想看看它是否是一种解决问题的犹太方式.
(简短摘要)我想对一个记录ID列表进行linq-join,这些记录id不是(完全或至少很容易)在SQL中生成的.这是一个很大的列表,经常超过TDS RPC调用的2100项限制.所以我在SQL中所做的就是把它们放在一个临时表中,然后在我需要它时加入它.
所以我在Linq做了同样的事情.
在我的MyDB.dbml文件中,我添加了:
<Table Name="#temptab" Member="TempTabs">
<Type Name="TempTab">
<Column Name="recno" Type="System.Int32" DbType="Int NOT NULL"
IsPrimaryKey="true" CanBeNull="false" />
</Type>
</Table>
Run Code Online (Sandbox Code Playgroud)
打开设计器并关闭它会在那里添加必要的条目,但为了完整起见,我将引用MyDB.desginer.cs文件:
[Table(Name="#temptab")]
public partial class TempTab : INotifyPropertyChanging, INotifyPropertyChanged
{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private int _recno;
#region Extensibility Method Definitions
partial void OnLoaded();
partial void OnValidate(System.Data.Linq.ChangeAction action);
partial void OnCreated();
partial void OnrecnoChanging(int value);
partial void OnrecnoChanged();
#endregion
public TempTab()
{
OnCreated();
}
[Column(Storage="_recno", DbType="Int NOT NULL", IsPrimaryKey=true)]
public int recno
{
get …Run Code Online (Sandbox Code Playgroud) 在LINQ to SQL语句中,我在数据库中有一个列名,它也是一个C#关键字(void).如何让编译器将其视为对象属性而不是关键字?
我可以使用方法表示法重写这个,当然,但是必须有一种方法可以在这里给编译器一个提示......
var p = from c in mytable
where c.id = rowNumber
select ( new { voidedState = c.void } ); // <--- Problem is here
Run Code Online (Sandbox Code Playgroud)
错误是:
Identifier expected; 'void' is a keyword
Run Code Online (Sandbox Code Playgroud)
我无法争辩,我只是在寻找一种解决方法.
谢谢.
我有一个带有嵌套选项卡控件的表单.我们正在努力使申请键盘友好的,因此,当您访问的是内突片控制,我们想控制-Tab键可循环内的标签.在大多数情况下,这是有效的.从这里开始关注TextBox A ....

控制选项卡将按预期将我们带到下一个选项卡,焦点在TextBox B中:

太棒了,正是我们想要的.如果"Gamma"和"Delta"相似,我会再次使用Control-Tab返回Alpha.
但是,我们有几个选项卡,其中所有控件都在组框内.这会导致各种问题.如果我采用相同的示例,但将文本框放在一个组框内.从这里开始重点关注TextBox A:

Control-tab将我们带到了我们期望的下一个标签.(奇怪的是,重点不是任何可见的......)

但是然后Control-tab再次带我们去......

猜测:这是因为从Alpha(带有分组框)到Beta(带有分组框)的选项卡让Beta无法控制焦点.焦点返回到选项卡控件本身(AlphaBetaGammaDelta),Control-Tab传递给外部选项卡控件(OneTwoThreeFour).
现在,我可以通过捕获内部选项卡控件的SelectedIndexChanged事件来解决这个问题,并在每次更改时手动将第一个可聚焦控件集中在该选项卡内,但这似乎是错误的,如果控件移动则会导致维护问题.
// Works, but I'm not crazy about it.
private void tabControlABGD_SelectedIndexChanged(object sender, EventArgs e)
{
switch(tabControlABGD.SelectedTab.Name)
{
case "tp_A":
tb_a.Focus();
break;
case "tp_B":
tb_b.Focus();
break;
case "tp_G":
tb_g.Focus();
break;
case "tp_D":
tb_d.Focus();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
弄乱表格的"标签顺序" - 没有任何影响.
解决这个问题的正确方法是什么?
我们已使用Google身份验证器将两个因素身份验证合并到我们的某个应用程序中.在质量保证方面,出现了一些非常奇怪的事情.虽然我设法修复它,但我不确定为什么修复工作.
对于我们的共享密钥,我们在开始TFA设置时为用户分配了GUID.GUID获得base-32编码,并放入转换为QR码的URL,并由用户使用手机扫描:
otpauth://totp/myapp_user?secret=g5swmnddhbtggllbgi3dsljumi3tallbmuytgljtg5sdgnbxmy2dgyjwmy======
Run Code Online (Sandbox Code Playgroud)
一切都适用于我们尝试过的所有非ios机器.仅在ios上,在大多数情况下尝试扫描条形码时会抛出一个非常奇怪的错误:
Invalid barcode
The barcode '[same as above]' is not a valid authentication token barcode.
Run Code Online (Sandbox Code Playgroud)
它符合Google/RFC 4226的最低机密要求(128位),正确进行Base32编码等等......为什么会失败?这条消息的典型原因是网址中有空格 - 但没有.
如果我在guid的开头添加一个小种子,一切正常:
otpauth://totp/myapp_user?secret=nfygq33omvzxky3lom3ggmzyha2tgnjnmu4gezbngqzdgyrnhbtdqzrnmeywimrwmjsgknzymi3a
Run Code Online (Sandbox Code Playgroud)
基本上它是以下之间的区别:
secret = enc.Encode32(Encoding.ASCII.GetBytes("iphonesucks" + Guid.NewGuid().ToString())); // Works
secret = enc.Encode(Encoding.ASCII.GetBytes(Guid.NewGuid().ToString())); // Fails
newAuthUrl = string.Format("otpauth://totp/myapp_user?secret={0}", secret);
Run Code Online (Sandbox Code Playgroud)
我有两个疯狂的理论,为什么这可能有效:
ios端口需要128位以上.无论发生什么事情,我的评论/种子足以超过这个限制......除了我实际上给它超过128位,因为它是一个guid-as-string.
在Base32解码之后,ios应用程序将秘密字符串识别为guid并对其执行其他操作.
我讨厌修复一个bug而不知道为什么修复工作.有谁能解释一下? 关于这一主题的其他阴谋理论也受到欢迎.
我有一张桌子regionkey:
areaid -- primary key, int
region -- char(4)
locale -- char(4)
Run Code Online (Sandbox Code Playgroud)
数据库的其余部分都是外键到areaid.在此表中,有一个具有唯一约束的(区域,区域设置)索引.
问题是我有两条记录:
101 MICH DETR
102 ILLI CHIC
Run Code Online (Sandbox Code Playgroud)
我需要在它们之间交换(区域,区域设置)字段,以便我最终得到:
101 ILLI CHIC
102 MICH DETR
Run Code Online (Sandbox Code Playgroud)
天真的方法不起作用,因为它违反了区域和区域设置的唯一索引:
update regionkey
set region='ILLI', locale='CHIC' where areaid = 101; -- FAILS
update regionkey
set region='MICH', locale='DETR' where areaid = 102;
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?有一种原子方式来进行交换吗?建议?
我有一个速度关键的多线程程序,它涉及树结构中的数据.实施如下:
typedef struct
{
// data pertaining to linkages, defining the architecture of the tree
int parent_node;
int child_node[MAX_CHILD_NODES];
int number_of_children;
// data pertaining to info at each node
float interesting_info_A;
char interesting_info_B[STRING_LEN];
long interesting_info_C;
}
node_type;
node_type node[MAX_NUMBER_OF_NODES];
CRITICAL_SECTION node_critsec[MAX_NUMBER_OF_NODES];
Run Code Online (Sandbox Code Playgroud)
程序进入并离开由node_critsec []控制的关键部分.因此,当我需要处理节点n的interesting_info_A/B/C时,我进入该节点的临界区(node_critsec [n]),进行处理然后离开.该计划蜿蜒在树周围,通过与父母和孩子的链接,采取各种复杂的路径.该程序还将增长树,即添加新节点并相应地修改其他节点的父/子链接(树永远不会缩小).我尝试确保每个线程一次只锁定一个节点,以避免死锁的风险.但后来我遇到了问题 - 如果我正在添加一个新节点,那么我可能想要锁定节点的父节点,以便我可以调整其子节点列表.在没有死锁或两个线程尝试修改同一节点中的数据的情况下让所有人工作将变得有点噩梦.是否有一些指导原则我应该关注何时以及锁定/解锁哪些节点我应该遵循 - 或者我是否必须超级智能并找出可能发生的每个事件的排列?
在MS Transact SQL中,假设我有一个像这样的表(Orders):
Order Date Order Total Customer #
09/30/2008 8.00 1
09/15/2008 6.00 1
09/01/2008 9.50 1
09/01/2008 1.45 2
09/16/2008 4.50 2
09/17/2008 8.75 3
09/18/2008 2.50 3
Run Code Online (Sandbox Code Playgroud)
我需要的是:对于每个客户,最近两个订单的平均订单金额.因此对于客户#1,我应该得到7.00(而不是7.83).
我一直在盯着这一个小时(在一个更大的问题中,我已经解决了),我认为我的大脑已经冻结了.帮助一个简单的问题?
与下面提到的其他问题类似,我有两个表格结构:
create table parent (
recno int identity(1,1) primary key not null,
groupCode int,
parentdata varchar(80)
);
create table child (
parentrecno int not null,
childdata varchar(80)
)
Run Code Online (Sandbox Code Playgroud)
我需要在这些表中快速插入几十万个记录 - 这些表包含数百万个与此插入无关的其他记录,并且永远不会安静.由于父/子的性质,它似乎不是一个好的候选人(似乎)SqlBulkCopy.
在C#中使用SqlCommand,INSERT我得到大约400-500条记录/秒插入,这有点太慢了.伪代码:
foreach(Record r in parentRecords)
{
Insert Fields from r into SqlCommand Parameters but not "recno"
Call ExecuteScalar to insert and fetch the inserted identity value (recno)
foreach(ChildRecord cr in parentRecords.Children)
{
Insert Fields from cr into SqlCommand Parameters
Insert the identity value …Run Code Online (Sandbox Code Playgroud) c# ×6
linq ×3
sql ×2
t-sql ×2
atomic ×1
c ×1
deadlock ×1
escaping ×1
ios ×1
namespaces ×1
sql-server ×1
sqlbulkcopy ×1
syntax ×1
tabs ×1
temp-tables ×1
winforms ×1
xml ×1
xsd ×1