Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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# c按列表中的输入索引外观对列表进行排序_C#_.net_Linq_List_Search - Fatal编程技术网

C# c按列表中的输入索引外观对列表进行排序

C# c按列表中的输入索引外观对列表进行排序,c#,.net,linq,list,search,C#,.net,Linq,List,Search,在我的代码中,我从用户那里得到一个字符串作为输入,并返回给他一个名称字符串列表,这些名称字符串包含在用户输入中 我希望按照输入的名字和姓氏的索引对这个列表进行排序,优先于名字。例如: 用户输入字符串:Da 预期结果: 大卫·加尔 美国爸爸 亚当·琼斯 示例说明: David Gal是第一个,因为Da的索引在名字中是0。 美国Dad排名第二,因为Da也是姓氏的第一名,但当索引相等时,姓氏的优先级低于姓氏。 亚当·琼斯是最后一位,因为Da在他的名字中有着最低的索引外观 编辑: 我已经找到了答案,但我

在我的代码中,我从用户那里得到一个字符串作为输入,并返回给他一个名称字符串列表,这些名称字符串包含在用户输入中

我希望按照输入的名字和姓氏的索引对这个列表进行排序,优先于名字。例如:

用户输入字符串:Da

预期结果: 大卫·加尔 美国爸爸 亚当·琼斯

示例说明: David Gal是第一个,因为Da的索引在名字中是0。 美国Dad排名第二,因为Da也是姓氏的第一名,但当索引相等时,姓氏的优先级低于姓氏。 亚当·琼斯是最后一位,因为Da在他的名字中有着最低的索引外观

编辑: 我已经找到了答案,但我没有足够的声誉来回答自己的问题,因此:

listToSort.OrderBycontact=> 联系人,姓名 .拆分“ 。选择WordInName,WordIndex=> uintWordInName.IndexOfSearchString,StringComparison.CurrentCultureInoRecase+WordIndex/doubleWordIndex+1 闵先生 ;
假设您的列表如下所示:

var input = new List<string>
{
    "David Gal", 
    "American Dad", 
    "Adam Jones"
};

list.Where您的代码在这里。OrderBy您的代码在这里,只需用您自己的尝试填充缺少的表达式即可。如果需要,请随意添加.ToList。用户输入中的名称是如何分隔的?我从用户输入中创建正则表达式,如下所示:wordRegex=new BsonRegularExpressionword+*,im;。然后,使用mongodriver库进行以下查询:query.EQx=>x.Name,wordregext问题现在结束。如果/当它重新打开时,您需要将问题中的答案作为实际答案发布,并从问题中删除您的答案。这与你现在不能发布的声誉无关。有些人在遇到问题时会使用“过于宽泛的接近理由”来说明他们想做什么,而没有表现出任何努力。我不认为你的问题太宽泛,但似乎很宽泛。谢谢,这很有效。我会请我工作的人向我解释它到底是如何工作的。@DavidG-这并没有按预期工作。看看这个。@Rahul Singh谢谢你指出。我检查了一下,一开始似乎还不错。如果在我之前没有人愿意做,我会尽力把它花掉,然后把答案贴出来。
var search = "da";

var results = input
    .OrderBy(w => 
        w.Split(' ')
         .Select(x => x.ToLower().IndexOf(search)).Max());