我一直在制作动态影像应用程序来管理演员或“天赋”。我有一个TALENT表和一个LANGUAGES表。我还有一个TALENTLANGUAGES表,显示了两者之间的多对多关系。
这是我可以编写的SQL,用于显示给定天赋所说的不同语言。
Select t.TalentID, t.FirstName, tl.LanguageID, l.Name from Talent t
inner join TalentLanguage tl on tl.TalentID = t.TalentID
inner join Language l on l.LanguageID = tl.LanguageID
where t.TalentID = 10000;
我在我的C#应用程序中我正在使用Linq来实现sql类。我怎么能用linq到sql做上面的代码。感谢。
答案 0 :(得分:0)
这是你可以做到的一种方式:
首先创建一个“结果”对象,这个对象将保存您在一个对象中所需的信息。我们称之为“TalentLanguagesContainer”
public class TalentLanguagesContainer
{
public int TalentID { get; set; }
public string FirstName { get; set; }
public int LanguageID { get; set; }
public string LanguageName { get; set; }
}
然后,创建一个Select语句,以适当地映射您的需求:
public IQueryable < TalentLanguagesContainer > GetTalentLanguages()
{
MyDataContext _dataContext = new MyDataContext();
return _dataContext.TalentLanguages
.Where(t => t.TalentID == 10000)
.Select(tl => new TalentLanguagesContainer() {
TalentID = tl.TalentID,
FirstName = tl.Talent.FirstName,
LanguageID = tl.LanguageID,
LanguageName = tl.Language.Name });
}
此外,您可能需要考虑为更复杂的脚本(例如此脚本)编写存储过程 - 您可能会发现SQL脚本也可以更快地执行。
答案 1 :(得分:0)
var languages = from tl in talentDB.TalentLanguages
where tl.TalentID == id
select new { lang = tl.Language.Name, tal_id = tl.TalentID }; // could get more values if needed..
foreach (var l in languages)
{
string language = l.lang;
string talentID = l.tal_id;
// etc...
}
这很酷! Linq为我做了加入!!