小编Der*_*ean的帖子

MonoTouch和LINQ - 由于对象的当前状态,操作无效

我有一个应用程序在Mac上使用Monotouch/C#作为前端,从后端的VS2010中的WCF服务中提取数据.在我离开之前,昨晚的一切都像梦一样,今天,我不确定发生了什么.我所能看到的只是来自Monotouch的linq中的一个例外,看起来我正在做的一切都很好,因为我在过去几天没有触及这段代码.

GetAllStaffResult从WCF 获取对象后,我回到主线程然后调用此方法Populate():

public void Populate()
{
    foreach (var m in Staff)
    {
        m.FranchiseName = this.Franchises.Single(f => f.ID == m.FranchiseID).Name;
    }
    [snip]
}
Run Code Online (Sandbox Code Playgroud)

这是堆栈跟踪:

System.InvalidOperationException: Operation is not valid due to the current state of the object.
at System.Linq.Enumerable.First[FranchiseListingItem] (IEnumerable'1 source, System.Func2 predicate, Fallback fallback) [0x0004a] in /Developer/MonoTouch/Source/mono/mcs/class/System.Core/System.Linq/Enumerable.cs:816
at System.Linq.Enumerbale.First [FranchiseListingItem] (IEnumerable'1 source, System.Func2 predicate) [0x00007] in /Developer/MonoTouch/Source/mono/mcs/class/System.Core/System.Linq/Enumerable.cs:843
at ADMobileServices.BOTransferDTOs.GetAllStaffResult.Populate() [0x0003b] (my code)
Run Code Online (Sandbox Code Playgroud)

不确定是什么导致这个...任何人都有任何想法?去看看我是否能找到MT源文件,这样我才能看到这些行.

哦,this是的GetAllStaffResult,上面的方法是一个部分类,有一系列的工作人员,特许经营权,地点.populate方法接受每个工作人员并根据工作人员的特许经营权ID填写特许经营权的名称.我这样做是因为我回来了500名具有长特许经营名称的员工,我通过在客户端重建对象图来节省带宽.

因为数据库中存在外键关系,所以我100%确定Single将始终返回结果.First()也给了我同样的问题.

编辑:堆栈跟踪是我在Single()方法后尝试的First()方法.我现在正在检查源代码,将报告我的发现.

c# linq wcf exception xamarin.ios

4
推荐指数
1
解决办法
4406
查看次数

MonoTouch.Dialog搜索栏在返回视图时丢失搜索查询

我正在使用MT.D列出DialogViewController中的人员.EnableSearch已启用,您可以过滤列表中的项目.但是,如果您推送到另一个视图,然后返回,搜索栏将为空.我能够恢复通过覆盖OnSearchTextChanged (string text)并将字符串存储到本地字段所使用的搜索查询,当视图重新聚焦时,我使用以下代码:

public override ViewDidAppear (bool animated)
{
    base.ViewDidAppear (animated);
    if (EnableSearch && !string.IsNullOrWhiteSpace (lastSearchQuery))
    {
        this.SearchButtonClicked (lastSearchQuery); // this inserts text
        this.StartSearch (); // no clue what this is doing
        this.ReloadData (); // does nothing but was worth a try
    }
}
Run Code Online (Sandbox Code Playgroud)

该代码将文本插入搜索栏并显示它,但除非您输入内容,否则我无法过滤它.键盘进入视图,有一个搜索按钮,但它什么也没做.有什么建议?

c# xamarin.ios monotouch.dialog

2
推荐指数
1
解决办法
917
查看次数

标签 统计

c# ×2

xamarin.ios ×2

exception ×1

linq ×1

monotouch.dialog ×1

wcf ×1