Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要LINQ查询来查找字符串项_C#_Linq - Fatal编程技术网

C# 需要LINQ查询来查找字符串项

C# 需要LINQ查询来查找字符串项,c#,linq,C#,Linq,我有一个列表,其中存储了一个名为Name的属性在类中的NameClass项集合。我试图做的是编写一个Linq查询,它将提取所有以Jones开头的名字,但前提是出现3次或更多。例如,如果我的列表包含以下项目: Name ----------- Jones Jonestown Smith Hector Jones Smith Smith 我正在寻找一个C函数,可以这样调用: GetNames("Jones"); 它应该返回: Jones Jonestown Jones Smith Smith

我有一个列表,其中存储了一个名为Name的属性在类中的NameClass项集合。我试图做的是编写一个Linq查询,它将提取所有以Jones开头的名字,但前提是出现3次或更多。例如,如果我的列表包含以下项目:

Name
-----------
Jones
Jonestown
Smith
Hector
Jones
Smith
Smith
我正在寻找一个C函数,可以这样调用:

GetNames("Jones");
它应该返回:

Jones
Jonestown
Jones
Smith
Smith
Smith
如果我运行这个:

GetNames("Smith");
GetNames("Hector");
它应返回:

Jones
Jonestown
Jones
Smith
Smith
Smith
如果我运行这个:

GetNames("Smith");
GetNames("Hector");
它应该不返回任何内容,因为Hector不在列表中3次或更多次


如果您能帮助编写此LINQ查询,我们将不胜感激

我想你在找这样的东西,是吗

string searchString = "Jones";
string lowerSS = searchString.ToLower();

List<NameClass> nameClasses; 

var results = nameClasses.Where(nc => nc.Name.ToLower().StartsWith(lowerSS));

if(results != null && results.Count() >= 3)
{
    return results;
}
else
{
    return null;
}
public static IEnumerable<NameClass> GetNames(IEnumerable<NameClass> names, String name, int minCount)
{
    var matchingNames = names.Where(n => n.Name.StartsWith(name));
    if (matchingNames.Count() >= minCount)
    {
        return matchingNames.ToList();
    }
    else
    {
        return null;
    }
}

var jones = GetNames(names, "Jones", 3);  

我想你在找这样的东西,是吗

public static IEnumerable<NameClass> GetNames(IEnumerable<NameClass> names, String name, int minCount)
{
    var matchingNames = names.Where(n => n.Name.StartsWith(name));
    if (matchingNames.Count() >= minCount)
    {
        return matchingNames.ToList();
    }
    else
    {
        return null;
    }
}

var jones = GetNames(names, "Jones", 3);  

如果您不需要在一个查询中完成所有操作,则此扩展方法应该可以:

public static IEnumerable<string> GetNames(this IEnumerable<string> list, string prefix, int minOccurences)
{
    var res = list.Where(x => x.StartsWith(prefix));
    return res.Count() >= minOccurences ? res : new string[0];
}

如果您不需要在一个查询中完成所有操作,则此扩展方法应该可以:

public static IEnumerable<string> GetNames(this IEnumerable<string> list, string prefix, int minOccurences)
{
    var res = list.Where(x => x.StartsWith(prefix));
    return res.Count() >= minOccurences ? res : new string[0];
}
你试过这个吗

public void GetNames(string pattern)
{
    var q = from n in names
        where n.Name.StartsWith(pattern)
        select n;

    if (q.Count() >= 3)
        return q.ToList();
    else
        return new List<NameClass>();
}
你试过这个吗

public void GetNames(string pattern)
{
    var q = from n in names
        where n.Name.StartsWith(pattern)
        select n;

    if (q.Count() >= 3)
        return q.ToList();
    else
        return new List<NameClass>();
}
一行:

public string[] GetNames(MyClass[] list, string prefix)
{
    return list
        .Where(item => 
            item.Name.StartsWith(prefix) && 
            list.Count(temp => temp.Name.StartsWith(prefix)) > 2)
        .Select(l => l.Name)
        .ToArray();
}
一行:

public string[] GetNames(MyClass[] list, string prefix)
{
    return list
        .Where(item => 
            item.Name.StartsWith(prefix) && 
            list.Count(temp => temp.Name.StartsWith(prefix)) > 2)
        .Select(l => l.Name)
        .ToArray();
}

如果这是作业,请在作业上加上标签。无意冒犯OP,但他看起来肯定不像照片中的小学生-世界上有很多家庭作业。这个问题的表述方式看起来更像是一项学术任务,而不是现实世界。有时候,很难判断什么时候有人在请求家庭作业帮助,什么时候提供一个简单易懂的场景。OP拥有5300的声誉,我应该更清楚,但我在查看@icemanind的代表之前输入了评论。如果这是家庭作业,请用家庭作业标记。对OP没有冒犯,但他看起来肯定不像照片中的小学生-世界上有很多家庭作业。这个问题的表述方式看起来更像是一项学术任务,而不是现实世界。有时候,很难判断什么时候有人在请求家庭作业帮助,什么时候提供一个简单易懂的场景。OP有5300的声誉,我本应该知道得更清楚,但我在查看@icemanind的代表之前输入了评论。我喜欢你获得结果的方式。可能会执行以下操作:返回结果。计数>=3?结果:新名单;当你们有太多的事情要做的时候,比如检查结果是否也可以为空,而不是if-Elsee,然后把所有的东西都放在一行会让事情变得不可读。我们经常处理庞大的代码库,更加详细会有所帮助。返回一个空列表只是浪费资源,我宁愿让自己期望“null”结果,因为这通常是一种更好的做法?运营商肯定有它的位置,我经常使用它。我喜欢你得到结果的方式。可能会执行以下操作:返回结果。计数>=3?结果:新名单;当你们有太多的事情要做的时候,比如检查结果是否也可以为空,而不是if-Elsee,然后把所有的东西都放在一行会让事情变得不可读。我们经常处理庞大的代码库,更加详细会有所帮助。返回一个空列表只是浪费资源,我宁愿让自己期望“null”结果,因为这通常是一种更好的做法?运营商肯定有它的位置,我经常使用它。