我使用VS
从数据库生成了实体。现在,当我想从我的数据库连接两个表并使用datagrid视图显示结果时。
我的LINQ是:
result = (from lang in my_entity.LANGUAGE
join c in my_entity.COUNTRY
on lang.COUNTRY_ID equals c.ID
select lang).ToList<LANGUAGE>();
dgvresult.DataSource = result;
dgvresult.Refresh();
显示语言表中的所有列,但不显示Country表中的列。 我希望语言中的列很少,而国家表中的几列只能在数据网格视图中显示。
我该怎么做。任何学习链接也不胜感激。 另外,我想详细了解DataGrid View。如果有人可以推荐好书或材料,请做。
答案 0 :(得分:3)
您可以创建一个新的匿名类型,然后绑定到它,如下所示:
result = (from lang in my_entity.LANGUAGE
join c in my_entity.COUNTRY
on lang.COUNTRY_ID equals c.ID
select new
{
lang.Col1,
land.col2,
c.Col1,
c.Col2
}).ToList();
dgvresult.DataSource = result;
dgvresult.Refresh();
或者您可以创建一个视图模型,只需在其中选择值:
public class LangCountryModel
{
public string LangCol1 { get; set; }
public string LangCol2 { get; set; }
public string CountryCol1 { get; set; }
public string CountryCol2 { get; set; }
}
result = (from lang in my_entity.LANGUAGE
join c in my_entity.COUNTRY
on lang.COUNTRY_ID equals c.ID
select new LangCountryModel
{
LangCol1 = lang.Col1,
LangCol2 = land.col2,
CountryCol1 = c.Col1,
CountryCol2 = c.Col2
}).ToList();
答案 1 :(得分:0)
var result = (from ob1 in lista1
join ob2 in lista2
on ob1.Id equals ob2.Id
select new
{
ob1.Age,
ob2.CarName
}).ToList();
dgvresult.DataSource = result;
dgvresult.Refresh();
答案 2 :(得分:0)
与@pingoo答案一样,只需进行少量修改:
通过使用源表Join
的导航属性COUNTRY
,您可以在不使用LANGUAGE
LINQ关键字的情况下执行以下操作:
result = (from lang in my_entity.LANGUAGE
select new {
lang.Col1,
lang.col2,
lang.COUNTRY.COUNTRY_ID
}).ToList();
dgvresult.DataSource = result; dgvresult.Refresh();`
答案 3 :(得分:-1)
(...).ToList<LANGUAGE>()
.Select(p=>new{p.LanguageProp,p.COUNTRY.COUNTRYProp,...})