我有一个像这样的对象数组;
public class Test
{
public string Name {get; set;}
public string URL {get; set;}
}
我有不同的名称,但URL地址相同。 当我使用字符串数组搜索Name条件时,我想获得不同的对象,其中Name对于相同的URL是相同的。
例如:
var names = new List<Test>();
names.Add(new Test() { Name = "john", URL = "http://www.test.com" });
names.Add(new Test() { Name = "mark", URL = "http://www.test.com" });
names.Add(new Test() { Name = "john", URL = "http://www.test2.com" });
当我搜索&#34; john,mark&#34; (includedWords)我想在上面的例子中得到一个结果。
我的测试LINQ是这样但它失败了;
var names = names.Select(n => new { URL = n.URL, Name = n.Name })
.GroupBy(o => o.URL)
.Where(g => g.Count() >= includedWords.Length)
.ToArray();
任何帮助都会节省我的一天,谢谢!
答案 0 :(得分:1)
尝试使用includedNames
的数组:
var includedNames = new [] { "john", "mark" };
var result = names
.GroupBy(o => o.URL)
.Where(g => g.Select(x => x.Name).OrderBy(n => n).SequenceEqual(includedNames))
.Select(g => g.Key)
.ToArray();
如果以逗号分隔格式输入 string ,则只需Split
。
以下是fiddle
答案 1 :(得分:0)
取决于我的需求,例如我必须得到不是键/值的对象我改变了你的答案;
var result = names
.Where(o => o.Select(p => p.Name).SequenceEqual(includedNames))
.Select(g => g.First())
.ToArray();
感谢您的所有帮助!