我有一个自定义类型的IEnumerable.(我是从SelectMany那里得到的)
我在IEnumerable中也有一个项目(myItem),我希望IEnumerable中的上一个和下一个项目.
目前,我正在做这样的想法:
var previousItem = myIEnumerable.Reverse().SkipWhile(
i => i.UniqueObjectID != myItem.UniqueObjectID).Skip(1).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
我可以通过简单地省略来获得下一个项目.Reverse.
或者,我可以:
int index = myIEnumerable.ToList().FindIndex(
i => i.UniqueObjectID == myItem.UniqueObjectID)
Run Code Online (Sandbox Code Playgroud)
然后.ElementAt(index +/- 1)用来获取上一个或下一个项目.
"更好"包括性能(内存和速度)和可读性的组合; 可读性是我的主要关注点.
我有两种方法将值分配给当前项目中并发字典中的现有键.
A. concurrentDictionary1[key] = value;;
和
B. concurrentDictionary2.AddOrUpdate(key, value, (k, v) => value);
如果我知道"密钥"存在,这些功能是否相同?
并发字典的并发性提供的保护是否被方法'A'绕过?
这有什么区别?选择一个而不是另一个的原因是什么?
我浏览了msdn上的文档,似乎他们只用方法'A'初始化并发字典,而不是更新它.
我正在创建一个C#Winforms应用程序,它通过HTTPS将数据发送到服务器.
登录机制应该是这样的:
我将用户名发送到服务器,它以rsa-modulus和rsa-exponent响应
我使用这些给定的参数加密密码,并将用户名+密码发送到服务器进行身份验证
我已经尝试了这个RSACryptoServiceProvider课程,但我找不到样本或任何说法如何使用给定的模数和指数进行加密?.
我认为没有指定任何值,它做默认加密参数..
所以,如果有人之前已经这样做了,他们可以给我一些提示吗?谢谢
更新:根据Carsten Konig先生的建议,.我试图用RSAParameters来做RSA.ImportParameters,但它返回带有加密异常的"BAD DATA"错误.我的代码如下.
我也尝试过RSA.FromXmlString(mykey); (其中mykey包含一个带有模数和exp的xml字符串)但是我也得到了一个带有加密异常的"BAD DATA"错误...任何人都有什么想法吗?或者如果它的一些微软bug,谁能建议其他一些体面的库容易做到这一点?
RSAParameters rsaparam = new RSAParameters();
rsaparam.Modulus = modbytes;
rsaparam.Exponent = expbytes;
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider() ;
RSA.ImportParameters(rsaparam);
byte[] encryptedData = RSA.Encrypt(dataToEncrypt, false)
Run Code Online (Sandbox Code Playgroud) 我创建了一个结构:
public struct User {
public string name;
public string email;
public string age;
}
Run Code Online (Sandbox Code Playgroud)
然后创建一个:
User user = new User();
user.name = "Freewind";
user.email = "abc@test.com";
user.age = 100;
Run Code Online (Sandbox Code Playgroud)
然后显示它:
MessageBox.Show(user.ToString());
Run Code Online (Sandbox Code Playgroud)
我希望它可以打印用户结构的所有字段,但事实并非如此.它只是显示:
MyApp.User
Run Code Online (Sandbox Code Playgroud)
有没有简单的方法来显示结构的所有字段?
IOW,有没有一种标准的测试方法,la:
if (! con.Open())
con.Open();
Run Code Online (Sandbox Code Playgroud)
?
更新:我想我没有提到这些是我正在使用的Oracle的ODP组件.OracleConnection组件没有ConnectionState属性.
我需要一个regex匹配这个模式(使用C#)
我的匹配必须以2个字母字符(MA或CA)开头,并且必须以6或7位数字结尾; 例如CA123456或MA123456或MA1234567
这是我尝试过的:
Regex.IsMatch(StringInput, @"^[MA]{2}|^[CA]{2}\d{6,7}?"))
Run Code Online (Sandbox Code Playgroud)
不幸的是,它似乎与大多数东西相匹配