J'ai une recherche qui cherche deux choses. Articles et contacts. Ils ont chacun leur propre table avec leurs propres attributs uniques. Je suis capable de rechercher avec succès chaque indépendant l'un de l'autre et de renvoyer les résultats à deux vues de liste. Mais est-ce moche et la pagination est devenue un problème alors je dois convertir ces deux tables en un résultat similaire que je peux afficher comme résultat de recherche. Ces résultats n'ont aucune relation directe les uns avec les autres. Le group t3 by new
me dégoûte. Dois-je les regrouper pour que cela devienne un résultat similaire? Les résultats s'affichent actuellement dans un ListView en utilisant par exemple <%#Eval("ItemName") %>
Linq query multple tables avec différents attributs
ItemContext db = new ItemContext(); //DB connection (Item,Contact)
var q = (from t1 in db.Item
join t2 in db.Categories on t1.CategoryID equals t2.CategoryID
join t7 in db.Divisions on t1.DivisionID equals t7.DivisionID
from t3 in db.Contacts
join t4 in db.Categories on t3.CategoryID equals t4.CategoryID
join t5 in db.Divisions on t3.DivisionID equals t5.DivisionID
join t6 in db.ContactTitle on t3.ContactTitlesID equals t6.ContactTitlesID
where
(DDLInt == 1 || t3.DivisionID == DDLInt) &&
//Contains
(
t3.ContactName.Contains(keyword) ||
t3.ContactEmail.Contains(keyword) ||
t3.ContactOPhone.Contains(keyword) ||
t3.ContactID.Equals(searchID)
)
group t3 by new
{
t3.ContactID,
t3.ContactName,
t3.ContactOPhone,
t3.ContactCell,
t3.ContactEmail,
t3.DivisionID,
t3.CategoryID,
t4.CategoryName,
t5.DivisionName,
t6.ContactTitlesName
}
into i
select new
{
i.Key.ContactID,
i.Key.ContactName,
i.Key.ContactOPhone,
i.Key.ContactEmail,
i.Key.ContactCell,
i.Key.CategoryName,
i.Key.DivisionName,
i.Key.CategoryID,
i.Key.DivisionID,
i.Key.ContactTitlesName
});
return q.ToList<dynamic>();
}
Merci beaucoup! Cela a fonctionné parfaitement. Je dois changer quelque chose d'autre maintenant. Je relie de mes résultats en utilisant un QueryString. Existe-t-il un moyen que je puisse les identifier par type (article, contact) pour quand je lier à une page de détails? exemple 'NavigateUrl = '<% # Eval (" ID "," ~/LoggedIn/ContactDetails.aspx? ContactID = {0} ")%>' />' – jackncoke
Ajouter un champ (comme Type = "Contact" ou "Élément ") au type anonyme. –
En fait, je travaillais là-dessus! Merci encore ! – jackncoke