Comment spécifier la signature Func pour les objets anonymes?Comment spécifier .NET Type de retour d'objet anonyme dans Linq en utilisant Func <T,Q>?
new Func<DataSet, **IEnumerable<int>>**
J'ai un problème avec le type de retour où je l'ai spécifié comme IEnumerable <> dans la déclaration Func
erreur que je reçois de l'expression est
Impossible de convertir l'expression type 'System.Collections.Generic.IEnumerable < {ParentNodeId: int}>' pour renvoyer ype 'System.Collections.Generic.IEnumerable'
Comment puis-je spécifier IEnumerable < {ParentNodeId: int}> dans func? Par ailleurs, j'aurais pu utiliser le code commenté "query" et en avoir terminé avec. Mais voulait être plus expressif et essayer quelque chose de nouveau après avoir regardé cette réponse Why doesn't C# have lexically nested functions?
EDIT: Résultat final
public int GetCachedRootNodeId(IList<int> fromNodeIds, int forNodeId)
{
var result = forNodeId;
const string spName = "spFetchAllParentNodeIDs";
using (var ds = _df.ExecuteDatasetParamArray(_ConnectionString, spName, forNodeId))
{
if (DataAccessUtil.DataSetIsEmpty(ds)) return result;
var orderParentNodeIDByLevelDesc = new Func<DataSet, IEnumerable<int>>(resultSet =>
from DataRow row in DataAccessUtil.GetFirstTableRows(resultSet)
orderby DataAccessUtil.GetInt32(row, "Level") descending
select DataAccessUtil.GetInt32(row, "ParentNodeID"));
foreach (var parentNodeId in orderParentNodeIDByLevelDesc(ds))
{
if (fromNodeIds.Contains(parentNodeId))
return parentNodeId;
}
}
return result;
}
Ha !, c'était mon intention originale Merci – Sung
La réponse de Jon Skeet est géniale si quelqu'un a vraiment besoin d'une classe d'anony multiproperty mais dans ce cas, c'est juste un int! – TheSoftwareJedi
J'aurais choisi la réponse de Jon Skeet comme réponse a été que je retourne plusieurs propriétés comme vous l'avez mentionné. – Sung