我想将样本数据中的数据绑定到c#中的代码。当尝试在线提供不同型号时,我无法获得准确的输出。我想在数据表中的两个值之间进行算术运算。
我的xml数据如下所示:
<SampleData:data xmlns:SampleData="clr-namespace:Expression.Blend.SampleData.data"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<SampleData:data.factors>
<SampleData:cfsItem col1="item1" item1="1" item2="2" />
<SampleData:cfsItem col2="item2" item2="3" item2="4" />
</SampleData:data.factors>
</SampleData:data>
我想用LINQ查询选择值;即从数据中的表'因子'中选择col1,并将其与从listbox元素返回的值进行比较。
private void ListBox1_Tap(object sender, GestureEventArgs e)
{
ListBoxItem selected = ListBox1.SelectedItem as ListBoxItem;
string y = selected.Content as string;
this.DataContext = from factors in data
where col1.factors == y
select item1;
}
任何人都可以帮我解决这个问题吗?谢谢!
答案 0 :(得分:0)
看起来您的data
对象是单个项目,并且您真正在factors
内寻找data
。根据您展示的内容,您可能需要以下内容根据factors
的内容与ListBox.SelectedItem
属性进行比较,选择col1
。
就像一个注释:我认为你的意思是第二个记录中的第一个item2
真正意味着item1
。如果是这样,以下内容适用:
private void ListBox1_Tap(object sender, GestureEventArgs e)
{
var selectedItem = (ListBoxItem)ListBox1.SelectedItem;
if (selectedItem != null)
{
var y = (string)selectedItem.Content;
var filteredFactors = (from factor in data.factors
where factor.col1 == y
select factor.Item1);
//filteredFactors is IEnumerable
this.DataContext = filteredFactors;
// if you need the first only or nothing if there is none.
this.DataContext = filteredFactors.FirstOrDefault();
// if there can be nothing or only one
this.DataContext = filteredFactors.SingleOrDefault();
}
}
在上面的示例中,我仅选择了已过滤的item1
的{{1}}
如果您想要返回整个记录,请在查询中删除factors
。
.item1
您可能会注意到我多次使用关键字var filteredFactors = (from factor in data.factors
where factor.col1 == y
select factor);
。如果它提高了可读性,我喜欢使用它。如果您有兴趣,请参阅Implicitly Typed Local Variables。