我已经尝试过这样的查询但是还没有能够获得预期的(或期望的)结果

时间:2014-11-09 17:07:07

标签: database linq list binding windows-phone-7.1

我已经尝试过这样的查询,但未能获得预期的(或期望的)结果

        using (ModelDBDataContext dataContext = new ModelDBDataContext("Data Source='isostore:/PueblosDB.sdf'"))
        {
            if (!dataContext.DatabaseExists())
            {
                dataContext.CreateDatabase();

                List<Pueblo> puebloObj = new List<Pueblo>()
                {
                    new Pueblo()
                    {
                    Id=1, Nombre="Aguadas", Imagen="Recursos/Imagenes/aguadas.png",Descrip="Algo",Coord="Algo"
                    },

                    new Pueblo()
                    {
                    Id=2, Nombre="Villa de Leyva", Imagen="Recursos/Imagenes/Villa de Leyva.png",Descrip="algo",Coord="Algo"
                    }
                 };

                dataContext.Pueblo.InsertAllOnSubmit(puebloObj);
                dataContext.SubmitChanges();
            }
        }
    }

创建后,我使用xaml加入数据

    public List<Pueblo> misPueblos { get; set; }

    void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        using (ModelDBDataContext contextoDatos = new ModelDBDataContext("Data Source='isostore:/PueblosDB.sdf'"))
        {
            misPueblos = contextoDatos.Pueblo.ToList();
        }

        listBox2.ItemsSource = misPueblos;

    }

在这个地方,我使用事件点击进行咨询

        var pue = from Pueblo in misPueblos
                  where Pueblo.Id == Convert.ToInt32(id)
                  select (new{Pueblo.Nombre}) ;

        MessageBox.Show("este es el id: " + pue.ToList());

1 个答案:

答案 0 :(得分:0)

在最后的代码段中,var pue将作为包含单个字符串属性的匿名对象的枚举出现。 MessageBox.Show正在尝试构造要显示的字符串,但不知道如何处理该列表。

看来你的目的是为单个字符串属性提供一个id。

    var pue = from Pueblo in misPueblos
              where Pueblo.Id == Convert.ToInt32(id)
              select Pueblo.Nombre ;

    MessageBox.Show("este es el id: " + pue.FirstOrDefault()??"Not Found");

现在var pue是一个简单的字符串枚举,因为您可能需要一条记录,所以对FirstOrDefault的调用会将枚举转换为第一条记录中的单个字符串,如果没有找到记录,则返回null。 / p>