turnând dintr-un tip var într-o clasă diferită

turnarea obiectelor tip var la matricea unei clase.

în exemplul meu pot interoga din tabel toate elementele. dar problema este atunci când am aruncat-o, pur și simplu doesnt exprimate toate instanțele. orice ajutor??

0

3 răspunsuri

Nu există un tip de tip "a var". O declarație folosind var face doar compilatorul infer tipul variabilei. Încă este tipărit static și funcționează ca și cum l-ați declara în mod explicit - deși vă permite să declarați variabile care folosesc un tip anonim .

In your case we don't know what any of the methods involved do, which means we can't really tell what's going on. It sounds like Query is probably of type IEnumerable. You'll need to express in code how to convert from an AccessPointItem to an AccessPoint.

Câteva puncte de reținut:

  • Your query expression is somewhat pointless - you probably just want to call tsvc.CreateQuery()
  • Conventionally, local variables in C# use camel casing (starting with lower case letters) not Pascal case
  • You create an array for no purpose - why?
  • Select() will never return null, so you don't need to check for it
  • Calling Cast will attempt to just cast each AccessPointItem to AccessPoint... is that really what you intended?
0
adăugat
ceea ce am nevoie exact este de a converti AccessPointItem la AccessPoint (matricea obiectelor AccessPoint în acest caz)
adăugat autor JOY, sursa
Sunt clasele mele. cele două clase au aproape aceleași proprietăți. și trebuie să folosesc clasa AccessPoint în controlerul meu. astfel încât după ce am obține valorile (ca AccessPointItem) din tabel. Trebuie să le arunc la un alt obiect de clasă (AccessPoint)
adăugat autor JOY, sursa
@JOY: Ei bine, nu știm nimic despre clasele AccessPoint și AccessPointItem ... sunt clase standard undeva sau sunt ale tale?
adăugat autor Jon Skeet, sursa

Există ceva în neregulă cu tipurile implicate.

Mai întâi citiți AccessPointItem :

var Query = from APs in tsvc.CreateQuery(...)

Apoi, încercați să o trimiteți la AccessPoint :

return Query.Cast()

Va trebui să implementați un fel de metodă de conversie pentru ca aceasta să funcționeze (din păcate, nu mi-am făcut-o niciodată, dar dintr-o alergare rapidă de la Google, văd o mulțime de informații despre subiect). Îmi dau o lovitură deasupra capului meu:

//inside AccessPointItem.cs
public static AccessPoint ToAccessPoint(this AccessPointItem item)//extension method looks good for the job
{
    AccessPoint retObj = new AccessPoint();
   //assign properties from 'item' to 'retObj'
    return retObj;
}

//Usage example in your case
return Query.Select(singleAccessPointItem => singleAccessPointItem.ToAccessPoint());
0
adăugat
da, exact asta trebuie să fac. și Google pare că nu oferă nici un ajutor :(
adăugat autor JOY, sursa
@ JOY Am încercat să pun împreună un cod, este doar o dovadă a conceptului, dar ar putea ajuta
adăugat autor Alex, sursa

Se pare că vă amestecați clasele AccessPoint și AccessPointItem . Incearca asta:

public static AccessPoint[] getAllAps()
{
    return tsvc.CreateQuery("AccessPointTable").ToArray();
}

sau asta:

public static AccessPointItem[] getAllAps()
{ 
    return tsvc.CreateQuery("AccessPointTable").ToArray();
}
0
adăugat
În tabel există elemente de tip AccessPointItem. și trebuie să le arunce și să se întoarcă ca obiecte AccessPoint.
adăugat autor JOY, sursa
Arătați-ne declarația de AccessPoint și AccessPointItem .
adăugat autor Damian Powell, sursa