De retour d'une Requête Linq dans une Liste de KeyValuePair de l'
Je suis en train de convertir mon graphique de l'application à partir de données préréglées à l'aide d'une base de données.
Auparavant, j'ai été en utilisant ce:
var data = new Dictionary<string, double>();
switch (graphselected)
{
case "1":
data = new Dictionary<string, double>
{
{"Dave", 10.023f},
{"James", 20.020f},
{"Neil", 19.203f},
{"Andrew", 4.039f},
{"Steve", 5.343f}
};
break;
case "2":
data = new Dictionary<string, double>
{
{"Dog", 10.023f},
{"Cat", 20.020f},
{"Owl", 19.203f},
{"Rat", 16.039f},
{"Bat", 27.343f}
};
break;
//etc...
}
//Add each item in data in a foreach loop
foreach (var item in list)
{
//Adjust the Chart Series values used for X + Y
seriesDetail.Points.AddXY(item.Key, item.Value);
}
Et c'est ce que j'essaie de faire:
var list = new List<KeyValuePair<string, double>>();
switch (graphselected)
{
case "1":
var query = (from x in db2.cd_CleardownCore
where x.TimeTaken >= 10.0
select new { x.IMEI, x.TimeTaken }).ToList();
list = query;
break;
//...
}
Mon code d'Erreur sur:
list = query;
Avec L'Erreur :
Cannot implicitly convert type 'System.Collections.Generic.List<AnonymousType#1>'
to 'System.Collections.Generic.List<System.Collections.Generic.KeyValuePair<string,double>>'
Comment puis-je mettre en œuvre une conversion?
Ne
Prises à partir d'un autre post: "LINQ besoin d'un constructeur sans paramètre, car il veut utiliser l'initialisation de collection ({} entre parenthèses). Vous pouvez avoir d'autres constructeurs de classe, mais LINQ ne les utilisera pas." Ce que je comprends c'est la raison pour laquelle son formaté comme dans mon code. Source: stackoverflow.com/questions/15382840/...
new { x.IMEI, x.TimeTaken }
ressembler à un KeyValuePair pour vous?Prises à partir d'un autre post: "LINQ besoin d'un constructeur sans paramètre, car il veut utiliser l'initialisation de collection ({} entre parenthèses). Vous pouvez avoir d'autres constructeurs de classe, mais LINQ ne les utilisera pas." Ce que je comprends c'est la raison pour laquelle son formaté comme dans mon code. Source: stackoverflow.com/questions/15382840/...
OriginalL'auteur Baggerz | 2014-08-28
Vous devez vous connecter pour publier un commentaire.
Si vous voulez une liste de keyvaluepair, vous avez besoin de le construire avec bien, keyvaluepairs! remplacer votre objet Anonyme dans le sélectionner en tant que tel :
Adaptées à vos nouvelles questions:
Si vos valeurs peuvent être nullable il n'a pas de sens de les jeter, de toute façon, il suffit d'utiliser le code que j'ai donné à vous et au lieu de changer le type de votre "liste" variable pour être compatible en tant que tel var liste = new List<KeyValuePair<string, double?>>();
merci ronan, j'ai essayé ci-dessus, mais alors il ne marche pas comme double de sélectionner de nouveaux KeyValuePair<string,double>(x.IMEI,x.TimeTaken) alors je l'ai changé pour sélectionner de nouveaux KeyValuePair<string,double?>(x.IMEI,x.TimeTaken) toutefois, lorsque l'exécution du code, j'obtiens le même message d'erreur: Seuls sans paramètre constructeurs et les initialiseurs sont pris en charge dans LINQ to entities.
Ce qu'il n'aime pas, c'est la nouvelle KeyValuePair (indépendamment de ce que vous utilisez), parce qu'il n'est pas un constructeur sans paramètre, ce que vous pouvez faire est de contournement de linq to entities, et cela, sur le côté client. L'édition de mon post aujourd'hui.
Vous êtes les bienvenus, et fait 🙂
OriginalL'auteur Ronan Thibaudau