2
私は、MySQLデータベースLINQを使用して外部テーブルのプロパティをdatagridviewに表示する方法は?
public partial class adviser
{
public int adviserId { get; set; }
public string employeeNo { get; set; }
public string lastName { get; set; }
public string firstName { get; set; }
public string middleName { get; set; }
public Nullable<int> statId { get; set; }
public Nullable<int> createdById { get; set; }
public Nullable<System.DateTime> createdOn { get; set; }
public virtual stat stat { get; set; }
public virtual user user { get; set; }
}
public partial class stat
{
public stat()
{
this.advisers = new HashSet<adviser>();
}
public int statId { get; set; }
public string statName { get; set; }
public string details { get; set; }
public virtual ICollection<adviser> advisers { get; set; }
}
から世代オート二つのテーブルが、私は顧問
public List<adviser> GetList(AdviserParam p)
{
List<adviser> items;
using (VotingContext context = new VotingContext())
{
items = context.advisers.Include("stat").Where(x =>
(x.adviserId == p.AdviserId || p.AdviserId == 0)
&& (x.employeeNo.Contains(p.EmployeeNo) || p.EmployeeNo == "")
&& (x.lastName.Contains(p.LastName) || p.LastName == "")
&& (x.firstName.Contains(p.FirstName) || p.FirstName == "")
&& (x.middleName.Contains(p.MiddleName) || p.MiddleName == "")
// && (x.statId == 1)
).ToList();
}
return items;
}
のコレクションを取得するには、このメソッドを持っているし、私は、データグリッドビューにそれらを置くためにこれらのコードを使用します(winフォーム)、列を編集して、adviserIdとstatIdプロパティを表示しないようにしました。
ただし、dgvにはstatName(statsテーブルからの)は表示されません。どうすればそれを表示させることができますか?
"stat.statName"のような列にバインドしようとすると、DataGridViewは自動的に子参照をサポートしません。あなたのオプションは、次のいずれかになります:a)データの平坦なビューを含むPOCO ViewModelにグリッドをバインドします。 b) "親"にプロパティを追加して、子の値を検査します。 (すなわち、stat.statNameを返すアドバイザのStatName)c) "stat"にバインドし、Nameを返すToString()実装を追加します。 d)CellFormattingを使用します。 (https://stackoverflow.com/questions/14046830/datagridview-use-datapropertyname-to-show-child-element-property) –
新しい匿名タイプを選択すると、問題が解決されます。私の答えを見てください。 –