Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于另一个列表从中获取列表_C# - Fatal编程技术网

C# 基于另一个列表从中获取列表

C# 基于另一个列表从中获取列表,c#,C#,我之前问过这个问题,但我过于简化了,我仍然不知道如何以比我现在做的更好的方式来做 我有两张单子 一个脸谱网好友列表,一个简单的对象,考虑FoeBoo.ID唯一属性。 第二,一个用户列表,它是一个更复杂的对象,因为每个用户都会在facebook、twitter等网站中获得一个提供商列表,但是提供商列表可以为null,如果不为null,那么提供商不一定是facebook。因此: public class EFacebook { public long Id { get; set; } }

我之前问过这个问题,但我过于简化了,我仍然不知道如何以比我现在做的更好的方式来做

我有两张单子

一个脸谱网好友列表,一个简单的对象,考虑FoeBoo.ID唯一属性。

第二,一个用户列表,它是一个更复杂的对象,因为每个用户都会在facebook、twitter等网站中获得一个提供商列表,但是提供商列表可以为null,如果不为null,那么提供商不一定是facebook。因此:

public class EFacebook
{
    public long Id { get; set; }
}

public class EUser
{
    public long Id { get; set; }
    /// <summary>
    /// Nullable
    /// </summary>
    public List<EProvider> EProviders { get; set; }
}

public class EProvider
{
    public enum EnumProviderType
    {
        Facebook = 2,
        Twitter = 3
    }
    public EnumProviderType ProviderType { get; set; }
    public string Id { get; set; }
}
我需要的是过滤facebook列表,以获取所有facebook用户好友和所有非用户好友。

假设list fbList是第一个列表,list usersList是第二个列表。 您可以这样做:

fbList.Wherex=>usersList.Selectx=>x.Id.Containsx.Id=>这将返回作为用户的facebook实体列表。 第二个列表是此fbList和此fbList之间的差异

让我知道我是否正确理解了这个问题

塔玛什假设:

List<EFacebook> listEFacebookFriends = new List<EFacebook>();
List<EUser> listEUsers = new List<EUser>();
在这里,您可以获得非用户的Facebook好友:

var listEUsersNotOnFacebook = from user in listEUsers
    let fbProviders =
    from provider in user.EProviders
    where provider.ProviderType == EProvider.EnumProviderType.Facebook
    select provider.Id
    where fbProviders.Count() == 0
    select user.Id;

// this call will get facebook friends that are not users 
var friendsNotOnFacebook = listEFacebookFriends.Where(x => 
                            listEUsersNotOnFacebook.Contains(x.Id));

在对上一个问题的回答中,你不理解的部分是什么?EUser和EFacebook之间的等效性不在user.Id和facebook.Id中,而是在user.EProvider.Id和facebook.Id之间。EUser和EFacebook之间的等效性不在user.Id和facebook.Id中,而是在user.EProvider.Id和facebook.Id之间。
var listEUsersNotOnFacebook = from user in listEUsers
    let fbProviders =
    from provider in user.EProviders
    where provider.ProviderType == EProvider.EnumProviderType.Facebook
    select provider.Id
    where fbProviders.Count() == 0
    select user.Id;

// this call will get facebook friends that are not users 
var friendsNotOnFacebook = listEFacebookFriends.Where(x => 
                            listEUsersNotOnFacebook.Contains(x.Id));