我的逻辑需要一些帮助。
我正在尝试过滤从多个外部API调用中获得的对象列表。我得到的输入可以是对象的任何字段。
我的代码是这样的:
public ResultData GetData(string request){
string[] splitRequest = request.Split(' ');
ResultData resultData = new ResultData();
foreach(string split in splitRequest){
//send requests and fill resultData
//external/api/user/firstname/{input}
//external/api/user/lastname/{input}
//external/api/user/username/{input}
var exampleData = new {
UserName= "ABC",
FirstName= "FOO",
LastName= "BAR"
}
resultData.Add(exampleData);
}
//There might be doubles, remove those
resultData = resultData.Distinct();
//TODO: filter resultData so it's the closest match(es)
}
现在我想要的是如果请求是例如“FOO BAR”然后它返回具有名字FOO和姓氏BAR的用户,但是如果请求是“BAR FOO”,它仍然应该返回该用户。同一个请求也可能包含用户名,因此也必须考虑到这一点。
有没有一种简单的方法可以用linq做到这一点?或者我真的要在这里自己写一个完整的过滤功能?如果是这样,你能指出我在哪里寻找过滤器的正确方向吗?
提前致谢!
修改
好吧我刚才发现我正在为每个过滤器发送一个单独的请求,所以它就像
external/api/user/firstname/{input}
external/api/user/lastname/{input}
external/api/user/username/{input}
这意味着我可以在每个请求之后检查哪个人正在给我数据,然后根据它来划分它们。如果我找到完整的解决方案,我会在此处将其作为答案发布。
更新原始问题以更清楚地显示所有内容