相关疑难解决方法(0)

String包含VB.NET中的IgnoreCase

在C#中存在一个问题:没有不区分大小写的String.Contains方法(请参阅不区分大小写的'包含(字符串)').

在VB.NET中问题是一样的,但有一个解决方法:

Dim Str As String = "UPPERlower"
Dim b As Boolean = InStr(Str, "UpperLower") 
Run Code Online (Sandbox Code Playgroud)

但是,我对它几乎没有"问题":

1)在Visual Studio 的立即窗口中,此方法显示为"未声明";

2)如何动态调用此方法(应该是"调用者"对象)?说实际上我应该这样称呼它:

expr = Expression.Call(myStringParam, "Contains", Nothing, constantExpression, Expression.Constant(StringComparison.InvariantCultureIgnoreCase))
Run Code Online (Sandbox Code Playgroud)

3)功能位于何处(谁拥有,组装)InStr

.net c# vb.net string

2
推荐指数
1
解决办法
4321
查看次数

Expression.Call中的ToUpper()

下面的代码有效,但我想介绍一下 ToUpper()

var predicate =
    Expression.Lambda<Func<T, bool>>(
        Expression.Call(
            Expression.PropertyOrField(parameter, "FirstName"),
            "Contains", null,
            Expression.Constant("myvalue".ToUpper())), parameter
        );
Run Code Online (Sandbox Code Playgroud)

结果是:

{Param_0 => Param_0.FirstName.Contains("MYVALUE")}
Run Code Online (Sandbox Code Playgroud)

但是我喜欢这个:

{Param_0 => Param_0.FirstName.ToUpper().Contains("MYVALUE")}
Run Code Online (Sandbox Code Playgroud)

我该怎么改变?

.net c# linq

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

为什么"我"被"ı"取代

我收到了一个应用程序的崩溃报告,该应用程序尝试从之前编写的文件中读取XML.在请求用户将文件发送给我之后,我将其与应该写的文件进行了比较,发现了一个我之前没有遇到过的奇怪问题.

一些(但不是全部)i角色已被替换为?- 无点的我.例如,一个名为"title"的节点很好,但名为"initialdirectory"的节点有第一个被替换,第二个被单独留下,即?nitialdirectory.

直到今天,我甚至都不知道有这样一个角色,但现在我做了,我只是不知道它是如何编写的那样 - XML是XmlWriter用UTF8编码编写的.只是一般的日常写作,没有什么复杂的.

我通常(好吧,因为得到Resharper并且它在跳过参数StringComparison.OrdinalIgnoreCase时对我大吼大叫)在做IndexOf等时使用,但我在编写数据时应该如何做到这一点我不知所措,除非我应该开始改变线程文化.

以前有没有人遇到类似的问题,如果有的话,最好的方法是什么?

c# xml culture localization

2
推荐指数
1
解决办法
190
查看次数

LINQ - 如何忽略其中的空列表

这是我使用 LINQ 的第一步。我有两个过滤器列表作为参数,也可以为空。如果我以这种方式执行代码,我不会从空列表中返回任何值。
如果要忽略空列表,代码必须是什么样子?

    public List<PersonDTO> GetPersons(int pageNumber, int pageSize, List<string> departments, List<string> locations, string filterText)
    {
        if (filterText == null)
        {
            filterText = "";
        }

        List<Person> personsList = _dbContext.Persons
            .Where(a => (a.firstName.ToLower().Contains(filterText.ToLower()) || a.lastName.ToLower().Contains(filterText.ToLower()))
                        && departments.Contains(a.department) 
                        && locations.Contains(a.location))
            .Skip(pageNumber * pageSize).Take(pageSize).ToList();

        return _mapper.Map<List<PersonDTO>>(personsList);
    }
Run Code Online (Sandbox Code Playgroud)

.net c# linq .net-core

2
推荐指数
1
解决办法
2957
查看次数

如何在忽略大小写 c# 的情况下检查枚举值中的“包含”?

我需要检查 Enum 中存在的字符串值或不使用Contains.

public enum Days
{
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
    Sunday = 7
}

public class ResultObj
{
   public int Id { get; set; }
   public string Name { get; set; }
}

var filter = "Wed";
var dayList = Enum.GetValues(typeof(Days))
               .Cast<Days>()
               .Where(x => Enum.IsDefined(typeof(Days), filter))
               .Select(d => new ResultObj
               {
                   Id = (int)d,
                   Name = d.ToString()
               }).ToList();
Run Code Online (Sandbox Code Playgroud)

如果给出“周三”的意思,我需要一个 dayList 结果为{ Id …

c# string enums enumeration

2
推荐指数
1
解决办法
537
查看次数

为什么这会返回零结果?

我有一个List<List<string>>,当我尝试搜索List<string>它时,它返回没有结果.

有任何想法吗?

谢谢

        List<List<string>> test = new List<List<string>>();

        List<string> ff = new List<string>();
        ff.Add("1");
        ff.Add("ABC 1");
        test.Add(ff);

        ff = new List<string>();
        ff.Add("2");
        ff.Add("ABC 2");

        test.Add(ff);

        var result = test.Where(x=>x.Contains("ABC"));

        //result.Count(); is 0
Run Code Online (Sandbox Code Playgroud)

.net c# linq generics c#-4.0

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

C# 中 LIST 和 LINQ 中的 SQL Like 搜索

我有一个列表,其中包含需要排除的单词列表。

我的方法是有一个包含这些单词的列表并使用 Linq 进行搜索。

List<string> lstExcludeLibs = new List<string>() { "CONFIG", "BOARDSUPPORTPACKAGE", "COMMONINTERFACE", ".H", };
string strSearch = "BoardSupportPackageSamsung";
bool has = lstExcludeLibs.Any(cus => lstExcludeLibs.Contains(strSearch.ToUpper()));
Run Code Online (Sandbox Code Playgroud)

我想找出 lstExcludedLibs 中存在的字符串 strSearch 的一部分。

事实证明,它只.any查找完全匹配的内容。是否有可能使用类似或通配符搜索

这在 linq 中可能吗?

我本可以使用 foreach 和 contains 来实现它,但我想使用 LINQ 来使其更简单。

编辑:我尝试过 List.Contains 但它似乎也不起作用

c# linq

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

string [] []得到小写

我正在努力从头开始创建一个数据库.我有一个锯齿状的叫做data数组,我试着克隆(lns)它,克隆(lns)变成小写,所以也data变成了.但我不希望这样!我怎么能阻止这个?ignorecase是真的.如果我将其设置为false,则不再出现问题.

你可能不相信,至少我没有,所以我上传了一个视频.

    public string[][] getRows(string[][] data, int columnLength, int index = -1, string arg = "", bool ignoreCase = false, bool getContaining = false)
    {
        if (index >= columnLength) return null; // I love null!
        if (!getContaining && arg == "") return data;

        string[][] toReturn = new string[data.Length][];
        string[][] lns = data;
        int a = 0;

        if (ignoreCase)
        {
            arg = arg.ToLower();
            for (int i = 0; i …
Run Code Online (Sandbox Code Playgroud)

c# c#-4.0

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

用于比较string []是否包含给定字符串的lambda表达式

我的项目工作正常,直到我不得不考虑一个字符串数组而不仅仅是一个......我不知道如何解决这个问题.这Country是此方法所在的当前类的属性.它曾经是一个单独的字符串,但现在是一个数组.

最初它看起来像这样:

private Expression<Func<Payment, bool>> CountryMatches()
{
   if (Country.Length < 1) return Skip;
   return payment => payment.Country.ToLower().Contains(Country.ToLower());
}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚的是如何设置它,以便如果Country匹配中的任何字符串payment.Country...当然这是传回一个表达式...这是我最好的猜测(但显然不正确)如何做我需要做的事:

private Expression<Func<Payment, bool>> CountryMatches()
{
   if (Country.Length < 1) return Skip;
   return payment => payment.Country.ToLower() == Country.Any().ToLower();
}
Run Code Online (Sandbox Code Playgroud)

c# linq arrays expression

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

包含忽略大小写的方法

我有两个字符串数组,我需要比较相似的字符串.

string[] f1 = {"Ann", "mam", "far", "aBc"};
string[] f2 = {"ann", "nom", "far", "abc"};

Parallel.ForEach(f1, currenFile =>
{
    if (f2.Contains(currenFile, StringComparison.OrdinalIgnoreCase))
    {
        Console.WriteLine("matchfound"+currenFile);
    }
});
Run Code Online (Sandbox Code Playgroud)

我试图看看f2是否包含来自f1忽略大小写的单词.但是,知识产权在"StringComparison.OrdinalIgnoreCase"上有错误

参数类型System.StringComparission不能分配给参数类型Systems.Collections.Generic.IEqualityComparer

请让我知道如何解决此错误.

.net c#

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

标签 统计

c# ×10

.net ×5

linq ×5

c#-4.0 ×2

string ×2

.net-core ×1

arrays ×1

culture ×1

enumeration ×1

enums ×1

expression ×1

generics ×1

localization ×1

vb.net ×1

xml ×1