【发布时间】:2015-12-31 20:52:20
【问题描述】:
我正在尝试从我拥有的数据库中生成一个列表,并使用 LINQ 将其添加到 WPF C# 中的列表框中。
这是我现在拥有的 XAML:
<ListView x:Name="ListBox" Margin="16,232,22,10.4" SelectionMode="Multiple">
<ListView.View>
<GridView>
<GridViewColumn Header="Nettstasjon" Width="100" DisplayMemberBinding="{Binding Path=Name}"/>
<GridViewColumn Header="Område" Width="100" DisplayMemberBinding="{Binding Path=Area}"/>
<GridViewColumn Header="Radial" Width="100" DisplayMemberBinding="{Binding Path=Radial}"/>
</GridView>
</ListView.View>
</ListView>
为了读取数据库,我有这个代码隐藏。我创建了一个“TransformerStation”类来保存每行的数据。
public class TransformerStation : INotifyPropertyChanged
{
public string Name { get; set; }
public string Radial { get; set; }
public string Area {get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
然后我做了一个类来读取数据库
public IEnumerable<TransformerStation> ReadCSV(string fileName, string radial)
{
string[] lines = File.ReadAllLines(System.IO.Path.ChangeExtension(fileName, ".csv"), Encoding.UTF8);
return lines.Select(line =>
{
string[] data = line.Split(';');
foreach (var value in data)
{
if (data = radial)
{
return new TransformerStation(data[0], data[1], data[2]);
}
}
});
}
我的数据库如下所示:
N765;TANGEN;TANGEN L98
R2351;SPIKKESTAD;SPIKKESTAD K88
S622;KRÅKSTAD;KRÅKSTAD L812
S1318;KRÅKSTAD;KRÅKSTAD L812
我需要的如下:
我有一个带有按钮的 WPF,其内容等于我的数据库中的第三列 (F.eks KRÅKSTAD L812)。当我按下一个按钮时,我希望从我的数据库中收集第一列中的所有项目,这些项目与第三列中的按钮内容相匹配,并将它们显示在我上面创建的列表框中。
所以,如果我按下内容为“Kråkstad L812”的按钮,那么我的列表将显示
S622
S1318
对不起,我对 C# 和 WPF 很陌生。所以我没有太多代码要显示。但我真的很感谢我能得到的所有帮助,如果你解释代码中发生的事情真的会有所不同:) 所以为了澄清一下,我基本上需要 SELECTradial FROM 数据库并从中生成一个列表。
编辑,我也对从 csv 数据库导入数据的其他方式持开放态度。我刚刚选择了一个对我有用的:)
【问题讨论】:
-
您当前的实施遇到了什么问题?我唯一能看到的缺失是 if (data = Radial) 应该是 if (data[2] == Radial)
-
@wentimo,当我使用 if(data[2] == Radial) 时,我收到错误消息,“并非所有代码路径都在 typ 'Func
-
你是如何生成按钮的?
-