Я пытаюсь получить список из текста поля в таблицах тегов.
Я использую C# и asp. net core.
Мои отношения много-ко-многим многие с таблицей соединений.
Как получить текст в таблицах тегов?
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public ICollection<PostTag> PostTags { get; } = new List<PostTag>();
}
public class Tag
{
public int Id { get; set; }
public string Text { get; set; }
public ICollection<PostTag> PostTags { get; } = new List<PostTag>();
}
public class PostTag
{
public int Id {get;set;}
public int PostId { get; set; }
public Post Post { get; set; }
public int TagId { get; set; }
public Tag Tag { get; set; }
public string AdditionalInfo {get;set;}
}
public class MyContext : DbContext
{
public DbSet<Post> Posts { get; set; }
public DbSet<Tag> Tags { get; set; }
public DbSet<PostTag> PostTags {get;set;}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.UseSqlServer(
@"Server=localhost;Database=Test;Trusted_Connection=True");
}
Программа, приведенная ниже, дает неверный результат.
class Program
{
static void Main(string[] args)
{
var context = new MyContext();
int _Id = 1;
var texts = context.Posts
.Include(p => p.PostTags)
.ThenInclude( p => p.Tag)
.Where( p => p.Id == _Id )
.Select( p => p.PostTags.Select( pt => pt.Tag).Select( t => t.Text))
.ToList();
foreach (var text in texts) {
Console.WriteLine($" Element # {text}");
}
}
}
Результат :
Element # System.Linq.Enumerable+SelectEnumerableIterator`2[Microsoft.EntityFrameworkCore.Query.EntityQueryModelVisitor+TransparentIdentifier`2[Microsoft.EntityFrameworkCore.Storage.ValueBuffer,Microsoft.EntityFrameworkCore.Storage.ValueBuffer],System.String]