首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >其中list包含列表之一

其中list包含列表之一
EN

Stack Overflow用户
提问于 2014-11-21 17:02:06
回答 3查看 2.8K关注 0票数 4

我有和数组对象,它是

代码语言:javascript
复制
List<ContactModel> contactList;

public class ContactModel
{
    public string CustomKey { get; set; }
    public string[] ContactGroups { get; set; }
}

所以物体会是

代码语言:javascript
复制
{"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组”}的列表。我可以通过以下方法得到一个组的结果。

代码语言:javascript
复制
var selectedContracts =
    from contact in contacts
    where contact.ContactGroups.Contains("Group A")
    select new { contact.CustomKey, contact.ContactGroups };

是否有一种方法可以获得包含一个对象列表的所有对象的列表。

代码语言:javascript
复制
var selectedContracts =
    from contact in contacts
    where contact.ContactGroups.Contains("Group A", "Group B")
    select new { contact.CustomKey, contact.ContactGroups };

我要拿回物体1,2,4。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-21 17:18:36

目标方法:

代码语言:javascript
复制
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;
}

使用实例:

代码语言:javascript
复制
void Run()
{
    Initial();
    var selectedContacts = SelectContacts(contactList, 
      new[] { "Group A", "Group B" });
    PrintContacts(selectedContacts);
}

帮助方法:

代码语言:javascript
复制
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);
}
票数 2
EN

Stack Overflow用户

发布于 2016-11-16 11:00:43

这将返回1、2和4:

代码语言:javascript
复制
var objects = new string[]  { "Group A", "Group B" };

var selectedContacts = contactList.Where(contact => objects
    .Any(obj => contact.ContactGroups.Contains(obj)));
票数 2
EN

Stack Overflow用户

发布于 2014-11-21 19:04:58

不知道这是不是你要找的

测试:

代码语言:javascript
复制
    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 };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27066556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档