简体   繁体   English

Foreach语句不包含C#上GetEnumerator的公共定义

[英]Foreach statement does not contain public definition for GetEnumerator on C#

I'm having a problem with a Windows store 8.1 application . 我遇到了Windows商店8.1应用程序的问题。 The error is stating "foreach statement cannot operate on variables of type 'WindowsStore.WCF.PasserelleRepleyOFArrayOfUserResponseDTO' because 'WindowsStore.WCF.PasserelleRepleyOFArrayOfUserResponseDTO' does not contain a public definition for 'GetEnumerator'". 该错误表明“foreach语句无法对'WindowsStore.WCF.PasserelleRepleyOFArrayOfUserResponseDTO'类型的变量进行操作,因为'WindowsStore.WCF.PasserelleRepleyOFArrayOfUserResponseDTO'不包含'GetEnumerator'的公共定义”。

This is the code that is throwing up the error: 这是抛出错误的代码:

 public sealed partial class MainPage : Page
{
    WCFService.WCFServiceClient MyService;
    public MainPage()
    {
        this.InitializeComponent();
    }
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        MyService = new WCFService.WCFServiceClient();
    }
    private async void SearchBoxEventsQuerySubmitted(Windows.UI.Xaml.Controls.SearchBox sender,
SearchBoxQuerySubmittedEventArgs args)
    {
       var Candidat = await MyService.SearchCandidatesAsync(search.QueryText);
        UserResponseDTO user = new UserResponseDTO();
       foreach(Cand in Candidat)
       {

       }

    }

and this is my function WebService: 这是我的函数WebService:

 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class WCFService : IWCFService
{
      public PasserelleReply<List<UserResponseDTO>> SearchCandidates(string CandidateCriterion)
    {
        Console.WriteLine("/SearchCandidates");
        DBEntities db = new DBEntities();
        var r = db.Person.Where(
            x => x.Lastname.Contains(CandidateCriterion) ||
            x.Firstname.Contains(CandidateCriterion) ||
            x.Login.Contains( CandidateCriterion )).ToList();
        if (r.Count() != 0)
        {
            return new PasserelleReply<List<UserResponseDTO>>(
                r.Select(y => Converter.PersonToUserResponseDTO(y)).ToList());
            //db.Dispose();
        }
        else return new PasserelleReply<List<UserResponseDTO>>(ReponseErreurService.NoUsers, "Aucun utilisateur n'est trouvé.");
    }
}

and this is my code PasserelleReply: 这是我的代码PasserelleReply:

[DataContract]
public class PasserelleReply<T> where T : class
{
    public PasserelleReply(ReponseErreurService codeErreur, string messageErreur)
    {
        this.CodeErreur = (int)codeErreur;
        this.MessageErreur = messageErreur;
    }

    public PasserelleReply(T data)
    {
        this.Data = data;
    }

    /// <summary>
    /// Temps d'exécution du service
    /// </summary>
    [DataMember]
    public double? ExecutionTime { get; set; }

    /// <summary>
    /// Chaque exception a son propre code d'erreur. <br/>  Une valeur nulle signifie pas d'exception.
    /// </summary>
    [DataMember]
    public int? CodeErreur { get; private set; }

    /// <summary>
    /// Réponse de passerelle. <br/> Valeur nulle en cas d'exception.
    /// </summary>
    [DataMember]
    public T Data { get; private set; }

    /// <summary>
    /// Identification du client.
    /// </summary>
    [DataMember(IsRequired = false, EmitDefaultValue = false)]
    public string IdentifiantClient { get; set; }

    /// <summary>
    /// Les détails de l'exception seront disponibles ici.
    /// </summary>
    [DataMember]
    public string MessageErreur { get; private set; }

    /// <summary>
    /// Système client.
    /// </summary>
    [DataMember(IsRequired = false, EmitDefaultValue = false)]
    public string Plateforme { get; set; }


    /// <summary>
    /// Method to call if we need to override the default error codes
    /// </summary>
    /// <param name="codeErreur"></param>
    /// <param name="messageErreur"></param>
    /// <returns></returns>
    public PasserelleReply<T> ResetError(ReponseErreurService codeErreur, string messageErreur)
    {
        this.CodeErreur = (int)codeErreur;
        this.MessageErreur = messageErreur;
        return this;
    }
}

and this is my code User ResponseDTO: 这是我的代码User ResponseDTO:

[DataContract]
    public class UserResponseDTO:IEnumerable
    {
        [DataMember]
        public int Id { get; set; }

        [DataMember]
        public string Login { get; set; }

        [DataMember]
        public string Password { get; set; }

        [DataMember]
        public string Firsname { get; set; }

        [DataMember]
        public string Lastname { get; set; }

        [DataMember]
        public string Email { get; set; }

        [DataMember]
        public string Phone { get; set; }

        [DataMember]
        public List<RoleDTO> Roles { get; set; }

        [DataMember]
        public string OrigineName { get; set; }

        [DataMember]
        public string OrigineCode { get; set; }

    }

In my application I want to search for a person, so I want to Display my candidat in a gridview but I have this problem so I can't use a pool 在我的应用程序中,我想搜索一个人,所以我想在gridview中显示我的候选人,但我有这个问题所以我不能使用一个池

I do it: 我这样做:

  private async void SearchBoxEventsQuerySubmitted(Windows.UI.Xaml.Controls.SearchBox sender,
SearchBoxQuerySubmittedEventArgs args)
    {
       var Candidat = await MyService.SearchCandidatesAsync(search.QueryText);

       foreach(var Cand in Candidat.Data)
       {
           GridViewItem RegView = new GridViewItem();
           StackPanel Spanel = new StackPanel();
           Spanel.Children.Add(new TextBlock() { Text = Cand.Firsname });
           Spanel.Children.Add(new TextBox() { Text = Cand.Email });

           RegView.Content = Spanel;
           candGridview.Items.Add(RegView);
       }

but i have an exception : An exception of type 'System.NullReferenceException' occurred in WindowsStore.exe but was not handled in user code 但我有一个例外:WindowsStore.exe中出现'System.NullReferenceException'类型的异常,但未在用户代码中处理

try with 尝试

foreach(var Cand in Candidat.Data)
{


}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 C# Foreach 语句不包含 GetEnumerator 的公共定义 - C# Foreach statement does not contain public definition for GetEnumerator Foreach语句不包含getEnumerator的公共定义 - Foreach statement does not contain public definition for getEnumerator foreach语句获取错误无法对类型为的变量进行操作,因为“不包含&#39;GetEnumerator&#39;的公共定义 - Getting error foreach statement cannot operate on variables of type '' because '' does not contain a public definition for 'GetEnumerator' foreach语句无法对类型为“ gerant”的变量进行操作,因为“ gerant”不包含“ GetEnumerator”的公共定义 - foreach statement cannot operate on variables of type 'gerant' because 'gerant' does not contain a public definition for 'GetEnumerator' 剃刀。 @foreach语句无法运行,因为不包含GetEnumerator的公共定义 - Razor. @foreach statement cannot operate because does not contain public definition for GetEnumerator Foreach语句无法对类型为“对象”的变量进行操作,因为“对象”不包含“ GetEnumerator”的公共定义 - Foreach statement cannot operate on variables of type 'object' because 'object' does not contain a public definition for 'GetEnumerator' foreach语句无法对Dars类型的变量进行操作,不包含“ GetEnumerator”的公共定义 - foreach statement cannot operate on variables of type Dars does not contain a public definition for 'GetEnumerator' Foreach语句无法对类型为&#39;?&#39;的变量进行操作 因为“?” 不包含“ GetEnumerator”的公共定义 - Foreach statement cannot operate on variables of type '?' because '?' does not contain a public definition for 'GetEnumerator' 错误:foreach 语句无法对“”类型的变量进行操作,因为“”不包含“GetEnumerator”的公共定义 - Error: foreach statement cannot operate on variables of type '' because '' does not contain a public definition for 'GetEnumerator' foreach语句无法对&#39;Oblig1.Models.User&#39;类型的变量进行操作,因为它不包含&#39;GetEnumerator&#39;的公共定义 - foreach statement cannot operate on variables of type 'Oblig1.Models.User' because it does not contain a public definition for 'GetEnumerator'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM