C# 具有Where条件的GroupBy Linq
我有一个像这样的对象数组C# 具有Where条件的GroupBy Linq,c#,linq,group-by,where,C#,Linq,Group By,Where,我有一个像这样的对象数组 public class Test { public string Name {get; set;} public string URL {get; set;} } var result = names .Where(o => o.Select(p => p.Name).SequenceEqual(includedNames)) .Select(g => g.First())
public class Test
{
public string Name {get; set;}
public string URL {get; set;}
}
var result = names
.Where(o => o.Select(p => p.Name).SequenceEqual(includedNames))
.Select(g => g.First())
.ToArray();
我有不同的名字,但相同的网址。
当我使用字符串数组搜索名称条件时,我希望得到不同的对象,其中相同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" });
任何帮助都可以救我一天,谢谢 尝试对
包含的名称使用数组
:
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();
如果您以逗号分隔格式以字符串形式获取输入,则只需将其拆分即可
这里是取决于我的需要,比如我必须从那个非键/值中获取对象我这样更改了你的答案
public class Test
{
public string Name {get; set;}
public string URL {get; set;}
}
var result = names
.Where(o => o.Select(p => p.Name).SequenceEqual(includedNames))
.Select(g => g.First())
.ToArray();
谢谢你的帮助 includedWords是一个字符串还是一个数组?我想这是打字错误,
()
和你的类名。很抱歉我遗漏了,我得早点离开办公室,所以很抱歉耽搁了。实际上我用数组来表示includedName,这样就不会有问题了。我会试试这个,尽快给你回复:)谢谢!