微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C#/ XAML从包含字符串的Linq查询中分配选择器列表的ItemsSource属性错误:CS0029

如何解决C#/ XAML从包含字符串的Linq查询中分配选择器列表的ItemsSource属性错误:CS0029

我正在尝试对本地sqlite数据库使用Linq查询来分配Picker ItemsSource属性。但是,我得到的是“ {{Page_Title = Test 1}” 而不是Test 1。 其中:

Page_Title是sqlite表中的列名

测试1是我想要返回的值

我假设得到的原因是因为我使用列表而不是字符串。但是,当我尝试使用列表时,出现以下错误

CS0029:无法将类型“ System.Collections.Generic.List匿名类型:字符串Page_Title”隐式转换为“ System.Collections.Generic.List字符串”

我尝试使用.ConvertAll转换字符串,但确实删除 {Page_Title =} 仅返回测试1,但它作为每个字符作为列表中的一项返回。如下:

“ T”

“ e”

“ s”

“ t”

“ 1”

带有对象的代码

        VM_AnalyzePage CurrentPage = new VM_AnalyzePage();
                var Pagelist = (from UserPageTbl in conn.Table<UserPageTbl>()
                            where UserPageTbl.User_ID == App.user
                            select new
                            {
                                UserPageTbl.Page_Title

                            }).distinct().OrderBy(Page_Title => Page_Title).ToList<object>();


            CurrentPage.Pagelist = Pagelist;

带字符串的代码

            var Pagelist = (from UserPageTbl in conn.Table<UserPageTbl>()
                            where UserPageTbl.User_ID == App.user
                            select new
                            {
                                UserPageTbl.Page_Title

                            }).distinct().OrderBy(Page_Title => Page_Title).ToList();


            CurrentPage.Pagelist = Pagelist;

这是我要设置其值的类。注意,当我尝试转换为字符串时,在下面将“ object”更改为“ string”:

public class VM_AnalyzePage : INotifyPropertyChanged

{

    //properties
    private List<object> Pagelist;


    public List<object> Pagelist
    {
        get
        {
            return Pagelist;
        }
           
        set
        {
            Pagelist = value;
        }
    }

我还尝试过在下面投射“ Pagelist”变量以键入List字符串,但是随后出现相同的错误

            List<string> Pagelist = (from UserPageTbl in conn.Table<UserPageTbl>()
                            where UserPageTbl.User_ID == App.user
                            select new
                            {
                                UserPageTbl.Page_Title

                            }).distinct().OrderBy(Page_Title => Page_Title).ToList();


            CurrentPage.Pagelist = Pagelist;

解决方法

我能够通过将SQL语句替换为真正的LINQ语句来克服:

                List<string> pageList = conn.Table<UserPageTbl>().Where(t => t.User_ID == App.user).Select(t=>t.Page_Title).Distinct().ToList();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。