我从数据库字段中获取一个名为'Description'的字符串,它有换行符.它看起来像这样:
物品标题
描述在这里.这是项目的描述.
如何删除换行符.我尝试了以下功能,但它无法正常工作:
public string FormatComments(string comments)
{
string result = comments.Replace(@"\r\n\", "");
result = result.Replace(" ", "");
return result;
}
Run Code Online (Sandbox Code Playgroud)
请建议解决方案.
此致,Asif Hameed
使用PInvoke时,我注意到我们需要使用它IntPtr来引用Windows句柄.我想知道为什么不只是int用于手柄?我对句柄的理解是它只是一个整数值.
我需要比较两个对象,但在一次点击中比较它们的一些属性.这不是为了排序,而是为了确认是否有任何变化; 因为一个是旧保存的实例,第二个是同一事物的新导入实例
我认为通过编写自定义比较器可以获得最佳效果.只是有点困惑,是否要做IComparer,或IComparable,或什么tbh.
谢谢
NAT
我已经注意到一些在C#中处理lambda函数和匿名委托时工作和不起作用的事例.这里发生了什么?
class Test : Control {
void testInvoke() {
// The best overloaded method match for 'Invoke' has some invalid arguments
Invoke(doSomething);
// Cannot convert anonymous method to type 'System.Delegate' because it is not a delegate type
Invoke(delegate { doSomething(); });
// OK
Invoke((Action)doSomething);
// OK
Invoke((Action)delegate { doSomething(); });
// Cannot convert lambda expression to type 'System.Delegate' because it is not a delegate type
Invoke(() => doSomething());
// OK
Invoke((Action)(() => doSomething()));
}
void testQueueUserWorkItem() {
// The best …Run Code Online (Sandbox Code Playgroud) 我想创建一个只知道字段名称的MemberExpression; 例如:
public static Expression<Func<TModel, T>> GenerateMemberExpression<TModel, T>(string fieldName)
{
PropertyInfo fieldPropertyInfo;
fieldPropertyInfo = typeof(TModel).GetProperty(fieldName);
var entityParam = Expression.Parameter(typeof(TModel), "e"); // {e}
var columnExpr = Expression.MakeMemberAccess(entityParam, fieldPropertyInfo); // {e.fieldName}
var lambda = Expression.Lambda(columnExpr, entityParam) as Expression<Func<TModel, T>>; // {e => e.column}
return lambda;
}
Run Code Online (Sandbox Code Playgroud)
上述问题是字段类型必须是强类型的.将"对象"作为字段类型传递不起作用.有没有办法生成这个?甚至动态LINQ似乎也不起作用.
我正在使用C#System.Diagnostics.TextWriterTraceListener来打印跟踪.但跟踪文件变得太大(数百MB).我想改变行为TextWriterTraceListener,如果跟踪文件变大,它会将输出写入另一个文件.例如,原始跟踪文件是'output1.txt',如果它大于100MB,则TextWriterTraceListener应写入'output2.txt'.
你遇到过类似的问题吗?有没有优雅的解决方案?
我想写一个扩展方法,它可以在字典上工作,它的值是某种顺序.不幸的是,编译器似乎无法从我对该方法的使用中推断出泛型参数; 我需要明确指定它们.
public static void SomeMethod<TKey, TUnderlyingValue, TValue>
(this IDictionary<TKey, TValue> dict)
where TValue : IEnumerable<TUnderlyingValue> { }
static void Usage()
{
var dict = new Dictionary<int, string[]>();
var dict2 = new Dictionary<int, IEnumerable<string>>();
//These don't compile
dict.SomeMethod();
SomeMethod(dict); // doesn't have anything to do with extension-methods
dict2.SomeMethod(); // hoped this would be easier to infer but no joy
//These work fine
dict.SomeMethod<int, string, string[]>();
dict2.SomeMethod<int, string, IEnumerable<string>>();
}
Run Code Online (Sandbox Code Playgroud)
我意识到类型推断不是一门精确的科学,但我想知道是否有一些基本的"规则"我在这里缺失 - 我不熟悉规范的细节.
以下调用重载Enumerable.Select方法:
var itemOnlyOneTuples = "test".Select<char, Tuple<char>>(Tuple.Create);
Run Code Online (Sandbox Code Playgroud)
失败并出现歧义错误(为清晰起见,删除了名称空间):
The call is ambiguous between the following methods or properties:
'Enumerable.Select<char,Tuple<char>>
(IEnumerable<char>,Func<char,Tuple<char>>)'
and
'Enumerable.Select<char,Tuple<char>>
(IEnumerable<char>, Func<char,int,Tuple<char>>)'
Run Code Online (Sandbox Code Playgroud)
我当然可以理解为什么不明确指定类型参数会导致歧义(两个都会应用重载),但是在这样做后我没有看到.
对我来说似乎很清楚,目的是调用第一个重载,方法组参数解析为Tuple.Create<char>(char).第二个重载不应该适用,因为没有任何 Tuple.Create重载可以转换为期望的Func<char,int,Tuple<char>>类型.我猜测编译器很困惑Tuple.Create<char, int>(char, int),但它的返回类型是错误的:它返回一个二元组,因此不能转换为相关Func类型.
顺便说一句,以下任何一个使编译器开心:
Tuple.Create<char>也许这实际上是一个类型推断问题?).x => Tuple.Create(x).(在Select通话中使用类型推断很好).不出所料,尝试以Select这种方式调用其他重载也会失败:
var itemIndexTwoTuples = "test".Select<char, Tuple<char, int>>(Tuple.Create);
Run Code Online (Sandbox Code Playgroud)
这里的确切问题是什么?
我想只从目录返回10个文件.这可能吗?
DirectoryInfo d = new DirectoryInfo(HttpContext.Current.Server.MapPath("~/xml"));
FileInfo[] files = d.GetFiles("*.xml");
Run Code Online (Sandbox Code Playgroud)
这种方式返回所有 XML文件,但我想得到前十个.
我想在C#中使用Regex验证电子邮件地址.
我正在使用这种模式:
^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
Run Code Online (Sandbox Code Playgroud)
此模式仅匹配大写字母.例如:
"example@gmail.com" - >返回false."EXAMPLE@GMAIL.COM" - >返回true.
我显然希望第一个例子也会返回true.
注意:我不想使用该RegexOptions.IgnoreCase标志.
我想更改模式本身以匹配第一个示例.我认为我可以在模式的末尾添加一个"/ i"或类似的东西,但它似乎不起作用.我也不喜欢在开头使用"?i".
我怎样才能实现这一目标?
(如果你可以为我重写整个模式,那就太棒了!).
谢谢.