[英]Access a var list<'a> from outside the method c#
我使用 LINQ 查询两个表,并将结果显示在 var Spelers 中。 这工作正常,但现在我想在第一次清除 var 后在方法之外重新使用这个查询。 我搜索了我知道的所有资源,但找不到解决方案。
查询 Spelers 使用 ObserverableCollections speler 和 golfclub。 我尝试为我的 C# 考试创建一个应用程序,我是 c# 新手。 我希望有人可以帮助我,因为我希望所有查询都可以公开访问。
public void JoinData()
{
var Spelers = (from spel in speler
join club in golfclub
on spel.ClubId equals club.Id
select new
{
Id = spel.Id,
Voornaam = spel.Voornaam,
Achternaam = spel.Achternaam,
Handicap = spel.Handicap,
Telefoon = spel.Telefoon,
Email = spel.Email,
Homeclub = club.Naam,
ClubId = spel.ClubId,
TeamId = spel.TeamId,
PuntenVoor = spel.PuntenVoor,
PuntenTegen = spel.PuntenTegen
}).ToList();
if (Datagrid.ItemsSource == null)
{
Datagrid.ItemsSource = Spelers;
}
}
我强烈建议为如此庞大的各种数据集使用单独的类型。
例如:
public class MyDataCarrier
{
public int Id { get; set; }
public string Voornaam { get; set; }
public string Achternaam { get; set; }
public int Handicap { get; set; }
public string Telefoon { get; set; }
public string Email { get; set; }
public string Homeclub { get; set; }
public int ClubId { get; set; }
public int TeamId { get; set; }
public int PuntenVoor { get; set; }
public int PuntenTege { get; set; }
}
然后只需编写方法:
public List<MyDataCarrier> GetData()
{
return (
from spel in speler
join club in golfclub
on spel.ClubId equals club.Id
select new MyDataCarrier
{
// here you assing each property
})
.ToList();
}
然后您可以轻松地在任何地方重复使用它:
if (DataGrid.ItemsSource is null)
{
DataGrid.DataSource = GetData();
}
首先,我们应该提取Speler
作为属性; 我们必须将匿名类型更改为更合适的类型,让它成为一个命名元组(自定义 class是另一种可能性):
//TODO: Please, check types! Is "int Handicap" a correct guess?
public List<(
int Id,
string Voornaam,
string Achternaam,
int Handicap,
string Telefoon,
string Email,
string Homeclub,
int ClubId,
int TeamId,
int PuntenVoor,
int PuntenTegen
)> Speler { get; private set; } = new ();
然后你可以把
public void JoinData() {
Spelers = (from spel in speler
join club in golfclub
on spel.ClubId equals club.Id
select (spel.Id,
spel.Voornaam,
spel.Achternaam,
spel.Handicap,
spel.Telefoon,
spel.Email,
club.Naam,
spel.ClubId,
spel.TeamId,
spel.PuntenVoor,
spel.PuntenTegen))
.ToList();
if (Datagrid.ItemsSource == null)
Datagrid.ItemsSource = Spelers;
}
如果您不希望您的方法有返回值,您也可以在方法之外使用该值。
Var Spelers=new List<object>();
public void JoinData()
{
Spelers = (from spel in speler
join club in golfclub
on spel.ClubId equals club.Id
select new
{
Id = spel.Id,
Voornaam = spel.Voornaam,
Achternaam = spel.Achternaam,
Handicap = spel.Handicap,
Telefoon = spel.Telefoon,
Email = spel.Email,
Homeclub = club.Naam,
ClubId = spel.ClubId,
TeamId = spel.TeamId,
PuntenVoor = spel.PuntenVoor,
PuntenTegen = spel.PuntenTegen
}).ToList();
if (Datagrid.ItemsSource == null)
{
Datagrid.ItemsSource = Spelers;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.