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));