Есть ли лучший способ заставить людей, не являющихся друзьями, появиться в разделе «Люди, которых вы можете знать»?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#»