在Xamarin Android应用程序中查询XElement

时间:2014-07-03 15:04:55

标签: linq xamarin xelement

我用来查询XElement的方法适用于Windows,但不适用于Xamarin Android:

using System.Xml;
using System.Xml.Linq;
using System.Linq;

    public string ValidateLicense()
    {
        XElement xEl;
        string sMessage;
        Model.clsWebServiceFunctions cSvc = new Model.clsWebServiceFunctions();

        sMessage = cSvc.QueryWEB_ValidateLicense();
        xEl = cSvc.ServiceGetData(clsSettings.LicensingUrl, sMessage);

        var vResult = from results in xEl.DescendantsAndSelf("Result")
                      select results;

        return vResult.First().Element("LicensingResult").Value;
    }

我得到的信息是

  

方法'First' not found in type' IEnumerable' 1'

这似乎是由于Xamarin不支持这种方法?!

我在我的应用程序中做了很多类似的查询,所以有人可以推荐一种可以在Xamarin中使用的替代方案吗?我可以提出这个但不知道一个好的解决方案。

1 个答案:

答案 0 :(得分:1)

我在iOS上遇到了类似的问题。

这似乎是Linq扩展方法无法加载IEnumerable的问题。

MvvmCross中出现错误,该错误旨在与Xamarin支持的移动平台协同工作。在部署新应用程序时,最初不会出现此问题,需要一些时间才能显示,即执行几天开发,尝试在模拟器上再次运行。

因此我认为这是与Xamarin的链接问题。 [编辑]:不再了,见下文。

http://forums.xamarin.com/discussion/19483/pcl-linq-problem-on-ios-vs2013-sp2 - 这里没有答案。

[编辑] 好的,所以我引用了一个NET FX 3.5 DLL。将引用的程序集更改为NET 4.0似乎可以解决问题。 请注意,在app输出中,您可以在启动时看到此信息。这很糟糕:

Loaded assembly: /Users/mike/Library/Caches/Xamarin/mtbs/builds/XamTestTouch2/7da682ee-1ab5-4b07-b745-c3c558a10329/assemblies/System.Core.dll [External]

这很好:

Loaded assembly: /Developer/MonoTouch/usr/lib/mono/2.1/System.Core.dll [External]

您可能需要在修复引用后删除Caches / Xamarin / mtbs / builds / AppName / GUID00-00000-0000 ..文件夹以使其重新运行。