0

我想将示例数据中的数据绑定到 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,并将其与从列表框元素返回的值进行比较。

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;
}

谁能帮我解决这个问题?谢谢!

4

1 回答 1

0

看起来你的data对象是一个单一的项目,你真的在factors​​里面寻找data
根据您显示的内容,您可能需要以下内容来选择factors基于ListBox.SelectedItem's 内容与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了过滤后的factors.
如果您想返回整个记录,您将.item1在查询中删除。

var filteredFactors = (from factor in data.factors
                       where factor.col1 == y
                       select factor);



您可能会注意到我多次使用该关键字var。如果它提高可读性,我喜欢使用它。如果您有兴趣,请参阅隐式类型局部变量。

于 2013-04-24T21:18:59.623 回答