C#-Linq-获取索引-帮助

| 有人可以通过linq语句帮助我, 这就是我到目前为止
public class Categories : ObservableCollection<Category>
{ 
    public Categories() { } 

    public int getBoardIndex(int BoardId)
    {
        return (from category in this
                from board in category.CategoryBoards
                where board.BoardId == BoardId
                select IndexOf(board)
                    );
    }
}
board是该类别中的一个项目,当我传递bordId(不是索引)时,它必须在每个类别的所有委员会中搜索该BoardId,然后返回该委员会的索引 我如何使用Linq做到这一点? 非常感谢您的帮助!!!     
已邀请:
        编辑 这是同一件事的简单得多的版本:
public int getBoardIndex(int BoardId)
{
    return (from category in this
            from board in category.CategoryBoards
            where board.BoardId == BoardId
            select category.CategoryBoards.ToList().IndexOf(board)).FirstOrDefault();
}
原始版本 要获取其所属类别中第一个匹配板的索引,请先找到类别,然后获取板的索引:
public int getBoardIndex(int BoardId)
{

    var categoryBoard = (from category in this
                         from board in category.CategoryBoards
                         where board.BoardId == BoardId
                         select new {category, board}).FirstOrDefault();
    return categoryBoard.category.CategoryBoards.IndexOf(categoryBoard.board);
}
要获得所有类别中扁平化集合中第一个匹配的Board的索引,@ Dan Tao拥有最佳答案。     
        在我看来,您想要这样的东西:
public int getBoardIndex(int BoardId)
{
    var potentialBoards = from category in this
                          from board in category.CategoryBoards
                          select board;

    return potentialBoards.ToList().FindIndex(b => b.BoardId == BoardId);
}
    
        到目前为止,您已经有了一个IEnumerable,其中包含匹配的所有板ID的索引。 如果您知道完全匹配一个板,则可以调用.Single()并返回该单个索引。如果可能有一个匹配的板,则可以调用.ToList()并将结果分配给变量。然后检查列表中是否有任何项目,然后返回第一个项目或-1(或引发异常,等等)。     
        好的,没有看到对象类,我不能确定,但​​是应该接近这个:
public static int getBoardIndex(this ObservableCollection<Category> coll, int BoardId)
{
    return coll.IndexOf((
                from category in coll
                from board in category.CategoryBoards
                where board.BoardId == BoardId
                select category).FirstOrDefault());
}
    

要回复问题请先登录注册