我有和数组对象,它是
List<ContactModel> contactList;
public class ContactModel
{
public string CustomKey { get; set; }
public string[] ContactGroups { get; set; }
}所以物体会是
{"1", {"Group A"} }
{"2", {"Group A", "Group B", "Group C"} }
{"3", {"Group C", "Group D"} }
{"4", {"Group A", "Group B", "Group C", "Group D"} }ContactGroups包含给定联系人所在的组{“A组”、“B组”、“C组”、“D组”}的列表。我可以通过以下方法得到一个组的结果。
var selectedContracts =
from contact in contacts
where contact.ContactGroups.Contains("Group A")
select new { contact.CustomKey, contact.ContactGroups };是否有一种方法可以获得包含一个对象列表的所有对象的列表。
var selectedContracts =
from contact in contacts
where contact.ContactGroups.Contains("Group A", "Group B")
select new { contact.CustomKey, contact.ContactGroups };我要拿回物体1,2,4。
发布于 2014-11-21 17:18:36
目标方法:
public static IEnumerable<ContactModel> SelectContacts(
List<ContactModel> contacts, string[] targetGroups)
{
return from contact in contacts
where targetGroups.Any(targetGroup =>
contact.ContactGroups.Contains(targetGroup))
select contact;
}使用实例:
void Run()
{
Initial();
var selectedContacts = SelectContacts(contactList,
new[] { "Group A", "Group B" });
PrintContacts(selectedContacts);
}帮助方法:
void Initial()
{
contactList = new List<ContactModel>
{
new ContactModel
{
CustomKey = "1",
ContactGroups = new[] { "Group A" }
},
new ContactModel
{
CustomKey = "2",
ContactGroups = new[] { "Group A", "Group B", "Group C" }
},
new ContactModel
{
CustomKey = "3",
ContactGroups = new[] { "Group C", "Group D" }
},
new ContactModel
{
CustomKey = "4",
ContactGroups = new[] { "Group A", "Group B", "Group C", "Group D" }
},
};
}
void PrintContacts(IEnumerable<ContactModel> contacts)
{
foreach (var selectedContract in contacts)
Console.WriteLine(selectedContract.CustomKey);
}发布于 2016-11-16 11:00:43
这将返回1、2和4:
var objects = new string[] { "Group A", "Group B" };
var selectedContacts = contactList.Where(contact => objects
.Any(obj => contact.ContactGroups.Contains(obj)));发布于 2014-11-21 19:04:58
不知道这是不是你要找的
测试:
var contactList = new List<ContactModel> { new ContactModel {CustomKey = "1", ContactGroups = new[]{"Group A"} },
new ContactModel {CustomKey ="2", ContactGroups = new[]{"Group A", "Group B", "Group C"} },
new ContactModel {CustomKey ="3",ContactGroups = new[] {"Group C", "Group D"} },
new ContactModel {CustomKey ="4", ContactGroups = new[]{"Group A", "Group B", "Group C", "Group D"}},
new ContactModel {CustomKey ="5", ContactGroups = new[]{"Group A", "Group C", "Group D"}},
new ContactModel {CustomKey ="6", ContactGroups = new[]{ "Group D"}},
new ContactModel {CustomKey ="7", ContactGroups = new[]{"Group C"}},};
var CheckFor = new List<string>{"Group A", "Group B"};
var selectedContracts =
from contact in contactList
where contact.ContactGroups.Any(x => CheckFor.Contains(x))
select new { contact.CustomKey, contact.ContactGroups };https://stackoverflow.com/questions/27066556
复制相似问题