Есть ли лучший способ заставить людей, не являющихся друзьями, появиться в разделе «Люди, которых вы можете знать»?C#

Место общения программистов C#
Ответить
Anonymous
 Есть ли лучший способ заставить людей, не являющихся друзьями, появиться в разделе «Люди, которых вы можете знать»?

Сообщение Anonymous »

Я пытаюсь создать социальное приложение, такое как Facebook, где вы можете добавлять людей в друзья.
Теперь я хочу добавить раздел «Люди, которых вы можете знать», в котором отображаются все пользователи приложения, кроме ваших друзей.
Я создал модель «ApplicationUser», которая имеет отношение «многие ко многим», чтобы у пользователя могло быть несколько друзей. Вот определение модели «ApplicationUser»:
public class ApplicationUser : IdentityUser
{
public string Fullname { get; set; }

public DateOnly BirthDate { get; set; }

public string? ProfilePicUrl { get; set; }

public string Bio { get; set; }

public ICollection Users { get; set; }
public ICollection Friends { get; set; }
}

А вот определение модели «User_Friend», которая отображает отношение M-N:
public class User_Friend
{
public int Id { get; set; }

public string UserId { get; set; }

public ApplicationUser User { get; set; }

public string FriendId { get; set; }

public ApplicationUser Friend { get; set; }

public DateTime FriendsSince { get; set; }

}

вот мой код, он работает как положено, но похоже, что должен быть лучший или более чистый способ
public IActionResult Index()
{
var claim = (ClaimsIdentity)User.Identity;
var user = claim.FindFirst(ClaimTypes.NameIdentifier);

//everyone ids except me
List AllIds = _context.applicationUsers.Where(u => u.Id != user.Value).Select(x=>x.Id).ToList();
// friends ids
List friendsIds = _context.user_Friends.Where(u => u.UserId == user.Value).Select(x=>x.FriendId).ToList();
// non-friends ids
List nonFriendsIds = AllIds.Except(friendsIds).ToList();

List nonFriends = new List();

if (user != null)
{
foreach (var x in nonFriendsIds)
{
nonFriends.Add(_context.applicationUsers.FirstOrDefault(u => u.Id == x));
}
}

return View(nonFriends);
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... -know-sect
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»