Я хочу найти из двух таблиц, которые не имеют никаких связей, это мои таблицы
public class News
{
public int Id { get; set; }
public string Title { get; set; }
public string FullText { get; set; }
}
public class SubFolder
{
public int Id { get; set; }
public string Title { get; set; }
public string Text { get; set; }
}
, для которых я создаю ViewModel и реализую IEquatable <>
public class SearchViewModels:IEquatable<SearchViewModels>
{
public int NewsId { get; set; }
public string NewsText { get; set; }
public string NewsTitle { get; set; }
public int SubId { get; set; }
public string SubFolderText { get; set; }
public string SubFolderTitle { get; set; }
public bool Equals([AllowNull] SearchViewModels other)
{
//Check whether the compared object is null.
if (Object.ReferenceEquals(other, null)) return false;
//Check whether the compared object references the same data.
if (Object.ReferenceEquals(this, other)) return true;
return NewsTitle.Equals(other.NewsTitle) &&
NewsId.Equals(other.NewsId)&&
NewsText.Equals(other.NewsText)&&
SubFolderTitle.Equals(other.SubFolderTitle)&&
SubFolderText.Equals(other.SubFolderText)&&
SubId.Equals(other.SubId);
}
public override int GetHashCode()
{
int hashNewsText = NewsText == null ? 0: NewsText.GetHashCode();
int hashNewsID = NewsId == null ? 0 :NewsId.GetHashCode();
int hashNewsTitle = NewsTitle == null ? 0 :NewsTitle.GetHashCode();
int hashSubTitle = SubFolderTitle == null ? 0 :SubFolderTitle.GetHashCode();
int hashSubText = SubFolderText == null ? 0 :SubFolderText.GetHashCode();
int hashSubId = SubId == null ? 0 :SubId.GetHashCode();
return hashNewsText ^ hashNewsID ^ hashNewsTitle ^ hashSubId ^ hashSubText ^ hashSubTitle;
}
}
И мой лямбда-поисковый запрос находится на странице бритвы:
[BindProperty]
public IEnumerable<Model.SearchViewModels> SearchViewModels { get; set; }
public void OnGet(string searchParam)
{
SearchViewModels = _context.News.SelectMany(a => _context.SubFolders, (a, b) => new {a,b})
.Where (x=>x.a.FullText.Contains( searchParam) && x.a.Active && x.b.Text.Contains( searchParam) && x.b.Publish)
.Select(x =>new SearchViewModels{
NewsText = x.a.FullText,NewsId = x.a.Id,NewsTitle = x.a.Title, SubFolderText= x.b.Text,SubId =x.b.Id, SubFolderTitle= x.b.Title})
.Distinct().ToList();
}
}
В поле зрения напишите вот так
@foreach (var item in Model.SearchViewModels)
{
<div class="btn btn-primary" >@nne</div>
@* @item.NewsId *@ <br>
<a href="#">@item.NewsTitle</a>
@* @Html.Raw(item.NewsText) *@
@* @item.SubId *@<br>
<a href="#">@item.SubFolderTitle</a>
@* @Html.Raw(item.SubFolderText) *@
<hr>
nne++;
}
Я получаю данные, но вот так
"newsText_1" "subFolderText_1"
"newsText_1" "subFolderText_2"
"newsText_2" "subFolderText_1"
"textT NewsTe
как мне это сделать
"newsText_1" "newsText_2"
"subFolderText_1" "subFolderText_2"