Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
常值LINQ并集_Linq_Drop Down Menu_Selectlist - Fatal编程技术网

常值LINQ并集

常值LINQ并集,linq,drop-down-menu,selectlist,Linq,Drop Down Menu,Selectlist,非常原始的问题,但我被困在我猜是新手。我有一个函数,它应该向我发送公司列表:另外,我希望调用者能够为下拉列表指定一个顶部元素。。毫无疑问。我有下面的代码,我将如何用返回的SelectList附加顶部元素 public static SelectList GetCompanies( bool onlyApproved, FCCIEntityDataContext entityDataContext, SelectListItem TopElement ) { var

非常原始的问题,但我被困在我猜是新手。我有一个函数,它应该向我发送公司列表:另外,我希望调用者能够为下拉列表指定一个顶部元素。。毫无疑问。我有下面的代码,我将如何用返回的SelectList附加顶部元素

    public static SelectList GetCompanies( bool onlyApproved, FCCIEntityDataContext entityDataContext, SelectListItem TopElement )
    {
        var cs = from c in entityDataContext.Corporates
                 where ( c.Approved == onlyApproved || onlyApproved == false )
                 select new
                 {
                     c.Id,
                     c.Company
                 };

        return new SelectList( cs.AsEnumerable(), "Id", "Comapny" );
    }

谢谢

这种方法一直对我有效

cs.ToList().Insert(0, new { TopElement.ID, TopElement.Company });
public static SelectList GetCompanies( bool onlyApproved, FCCIEntityDataContext entityDataContext, SelectListItem TopElement )
    {
            var cs = from c in entityDataContext.Corporates
                             where ( c.Approved == onlyApproved || onlyApproved == false )
                             select new SelectListItem {
                                     Value = c.Id,
                                     Text = c.Company
                             };

            var list = cs.ToList();
            list.Insert(0, TopElement);

            var selectList = new SelectList( list, "Value", "Text" );
            selectList.SelectedValue = TopElement.Value;

            return selectList;
    }

我忘记了我做这件事时学到的教训。您必须将LINQ作为SelectListItem输出。

这种方法对我来说一直很有效

public static SelectList GetCompanies( bool onlyApproved, FCCIEntityDataContext entityDataContext, SelectListItem TopElement )
    {
            var cs = from c in entityDataContext.Corporates
                             where ( c.Approved == onlyApproved || onlyApproved == false )
                             select new SelectListItem {
                                     Value = c.Id,
                                     Text = c.Company
                             };

            var list = cs.ToList();
            list.Insert(0, TopElement);

            var selectList = new SelectList( list, "Value", "Text" );
            selectList.SelectedValue = TopElement.Value;

            return selectList;
    }

我忘记了我做这件事时学到的教训。您必须将LINQ作为SelectListItem输出。

您可以将其转换为所示的列表,或者将IQueryable结果与一个元素的常量数组合并,甚至对其进行排序:

    static void Main(string[] args)
    {
        var sampleData = new[] {
            new { Id = 1, Company = "Acme", Approved = true },
            new { Id = 2, Company = "Blah", Approved = true }
        };

        bool onlyApproved = true;

        var cs = from c in sampleData
                 where (c.Approved == onlyApproved || onlyApproved == false)
                 select new
                 {
                     c.Id,
                     c.Company
                 };

        cs = cs.Union(new [] {new { Id = -1, Company = "None" }}).OrderBy(c => c.Id);

        foreach (var c in cs)
        {
            Console.WriteLine(String.Format("Id = {0}; Company = {1}", c.Id, c.Company));
        }

        Console.ReadKey();
    }

您可以将其转换为所示的列表,也可以将IQueryable结果与一个元素的常量数组合并,甚至对其进行排序:

    static void Main(string[] args)
    {
        var sampleData = new[] {
            new { Id = 1, Company = "Acme", Approved = true },
            new { Id = 2, Company = "Blah", Approved = true }
        };

        bool onlyApproved = true;

        var cs = from c in sampleData
                 where (c.Approved == onlyApproved || onlyApproved == false)
                 select new
                 {
                     c.Id,
                     c.Company
                 };

        cs = cs.Union(new [] {new { Id = -1, Company = "None" }}).OrderBy(c => c.Id);

        foreach (var c in cs)
        {
            Console.WriteLine(String.Format("Id = {0}; Company = {1}", c.Id, c.Company));
        }

        Console.ReadKey();
    }

这应该适合您:

List<Corporate> corporates =
            (from c in entityDataContext.Corporates
            where (c.Approved == onlyApproved || onlyApproved == false)
            select c).ToList();
corporates.Add(new Corporate { Id = -1, Company = "None" });

return new SelectList(corporates.AsEnumerable(), "Id", "Comapny");

这应该适合您:

List<Corporate> corporates =
            (from c in entityDataContext.Corporates
            where (c.Approved == onlyApproved || onlyApproved == false)
            select c).ToList();
corporates.Add(new Corporate { Id = -1, Company = "None" });

return new SelectList(corporates.AsEnumerable(), "Id", "Comapny");

TopElement是SelectListItem它只包含值和文本。TopElement是SelectListItem它只包含值和文本。与“System.Collections.Generic.List.Insertent,AnonymousType1”匹配的最佳重载方法具有一些无效参数和参数“2”:无法从“AnonymousType2”转换为“AnonymousType1”。我想我忘了指定entityDataContext.Corporates是LINQ to SQL类。。。编译器不允许添加匿名类型…与“System.Collections.Generic.List.Insertent,AnonymousType1”匹配的最佳重载方法具有一些无效参数和参数“2”:无法从“AnonymousType2”转换为“AnonymousType1”。我想我忘了指定entityDataContext.Corporates是LINQ to SQL类。。。编译器不允许添加匿名类型…非常棘手。。。编译代码;现在测试;确认后发布更新。。。。。建议:不需要最后一个select into变量cs-您可以将corporates直接传递到SelectList的构造函数中…谢谢。我现在已经删除了最后一个选择。非常棘手。。。编译代码;现在测试;确认后发布更新。。。。。建议:不需要最后一个select into变量cs-您可以将corporates直接传递到SelectList的构造函数中…谢谢。我现在已经删除了最后一个选择。@马克·拜尔斯:感谢您在20分钟内提供解决方案!非常感谢。@Mark Byers:感谢您在20分钟内提供解决方案!非常感谢。