标签: iqueryable

在IList或IQueryable中搜索对象

我需要在IQueryable列表中找到项目的匹配项.我有一个列表如下:

IQueryable<EventItem> eventItems = new Queryable<EventItem>();
EventItem eventItem1 = new EventItem("Event 1");
EventItem eventItem2 = new EventItem("Event 2");
eventItems.Add(eventItem1);
eventItems.Add(eventItem2);
Run Code Online (Sandbox Code Playgroud)

我现在想通过传入像eventItem2这样的EventItem来查找列表中的事件.如何搜索和返回类似EventItem found = eventItems.Select(eventItem2);

干杯,

小号

linq select ilist iqueryable

2
推荐指数
1
解决办法
6160
查看次数

Linq查询问题

我有这个代码从Alleged Perpetrator表返回一个caseID.该表还有一个"LastName"列.我想搜索caseID并返回LastName,但我不知道如何编写它.我一直在微软网站上寻找LINQ to SQL示例,但仍然无法弄明白.任何帮助将不胜感激!

public static class AllegedPerpetratorRepository
{
    public static IQueryable<AllegedPerpetrator> GetByCaseID(
        this IQueryable<AllegedPerpetrator> source,
        int caseID)
    {
        return (from s in source where s.CaseID.Equals(caseID) select s); 
    }
}
Run Code Online (Sandbox Code Playgroud)

c# linq iqueryable linq-to-sql

2
推荐指数
1
解决办法
143
查看次数

LINQ to Entites/IQueryable:对多个字段进行排序

我有以下我想要排序:

IQueryable<Map> list;
list = from item in ctx.MAP
         .Include("C")
         .Include("L")
         .Include("L.DP")
       select item;
return list.OrderBy(m=>(m.L.DP.Name + m.L.Code));
Run Code Online (Sandbox Code Playgroud)

这是有效的,但它按字母顺序排序 - 所以12在9之前出现.(假设代码是一个数字字段)

对此进行排序的最佳方法是什么,因此代码按数字排序?

linq sorting iqueryable

2
推荐指数
1
解决办法
4259
查看次数

如何获取IQueryable <T>扩展方法而不是IEnumerable <T>扩展?

可能真的很简单,请原谅我的无知......

据我所知,有几种Where()扩展方法:

Queryable.Where<TSource> Method (IQueryable<TSource>, Expression<Func<TSource, Boolean>>)

Enumerable.Where<TSource> Method (IEnumerable<TSource>, Func<TSource, Boolean>)

以上两个扩展都位于System.Linq命名空间中,因此我可以做到Where()足以证明我已经导入了正确的命名空间 - 或者是否有我需要的IQueryable扩展的另一个命名空间?

我理解IQueryable<T>继承自IEnumerable<T>但为什么我不能获得IQueryable<T>扩展?

class Test
{
    IQueryable<Test> SomeMethod(Func<T, bool> criteria)
    {
        return new List<Test> { new Test() }.AsQueryable().Where(criteria); // compiler error converting IEnumerable<T> to IQueryable<T>
    }

}
Run Code Online (Sandbox Code Playgroud)

如上所示,应该有一个可用的扩展方法返回IQueryable?为什么它会解析为IEnumerable Extensions?

c# ienumerable extension-methods iqueryable .net-4.0

2
推荐指数
1
解决办法
201
查看次数

如何从一个人的名单中查询大孩子?

在下面的代码中,我已经解释了我想要的内容,请有人帮我解决这个问题.

public class Person
{
    public IEnumerable<Child> Children { get; set; } 
}

public class Child
{
    public IEnumerable<GrandChild> GrandChildren { get; set; } 
} 

public class SearchingClass
{
    public void Search()
    {
        IEnumerable<Person> persons = MyPersons;
        IEnumerable<GrandChild> grandChildren = MyGrandChildren

        //Now I want only the Grand Children who are grand children of persons in Persons List 
        //How can I write a query for this ? 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

.net c# linq entity-framework iqueryable

2
推荐指数
1
解决办法
96
查看次数

为什么DbSet <t> .Where()默认使用IQueryable版本?

每当我们想使用IEnumerable扩展方法而不是IQueryable版本时,我们都使用AsEnumerable()方法.

var list = context.Details.AsEnumerable().Where(x => x.Code == "A1").ToList();
Run Code Online (Sandbox Code Playgroud)

为什么DbSet使用IQueryable版本的方法默认情况下,其他版本可用时(Where,Select,...)?

c# linq ienumerable iqueryable ef-code-first

2
推荐指数
1
解决办法
263
查看次数

Sitecore搜索:按术语获取结果

在这里,我试图获得多个术语的搜索结果.说全文="李牛仔裤",然后regexresult = {"lee","jeans"}.

代码:

IProviderSearchContext searchContext = index.CreateSearchContext();
IQueryable<SearchItem> scQuery = searchContext.GetQueryable<SearchItem>();
var predicate = PredicateBuilder.True<SearchItem>();

   //checking if the fulltext includes terms within " "
                    var regexResult = SearchRegexHelper.getSearchRegexResult(fulltext);

                    regexResult.Remove(" ");

                    foreach (string term in regexResult)
                    {
                        predicate = predicate.Or(p => p.TextContent.Contains(term));
                    }
                    scQuery = scQuery.Where(predicate);

IEnumerable<SearchHit<SearchItem>> results = scQuery.GetResults().Hits;

results=sortResult(results);
Run Code Online (Sandbox Code Playgroud)

排序基于sitecore字段:

  switch (query.Sort)
  {
    case SearchQuerySort.Date:
    results = results.OrderBy(x => GetValue(x.Document, FieldNames.StartDate));
    break;
    case SearchQuerySort.Alphabetically:
    results = results.OrderBy(x => GetValue(x.Document, FieldNames.Profile));
    break;
    case SearchQuerySort.Default:
    default:
    results = results.OrderByDescending(x => …
Run Code Online (Sandbox Code Playgroud)

linq search iqueryable sitecore predicatebuilder

2
推荐指数
1
解决办法
533
查看次数

c#Lambda Expression - 从字符串中获取属性值

考虑遵循lambda表达式:

IQueryable<Product> query = query.Where(x => x.ProductName.Contains("P100"));
Run Code Online (Sandbox Code Playgroud)

我需要转换上面这样的代码:

IQueryable<Product> query = query.Where(x => x.GetPropertyValue("ProductName").Contains("P100"));
Run Code Online (Sandbox Code Playgroud)

在这里,我添加了一个虚拟方法GetPropertyValue("ProductName")来解释需求.在上面的代码中,属性应该在运行时解析.换句话说,我需要从sting值Eg访问该属性"ProductName"

我怎样才能做到这一点?

c# linq lambda iqueryable

2
推荐指数
1
解决办法
7336
查看次数

IEnumerable和Lazy加载

我有以下型号 -

public class Student
{
     public int StudentID { get; set; }
     public string StudentName { get; set; }
     public Nullable<int> StandardId { get; set; }

     public virtual Standard Standard { get; set; }
}  

public class Standard
{      
     public int StandardId { get; set; }
     public string StandardName { get; set; }

     public virtual ICollection<Student> Students { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

关系是 - >一个标准可以有多个学生.当使用IEnumerable执行下面的代码时,它会执行延迟加载,如下面的日志所示

码-

using (var ctx = new SchoolDBEntities())
{
  ctx.Database.Log = Logger.Log;

  IEnumerable<Student> studList = …
Run Code Online (Sandbox Code Playgroud)

.net c# collections ienumerable iqueryable

2
推荐指数
2
解决办法
3202
查看次数

演员表达

我有以下内容:

class Base
class Derived : Base
IQueryable<Derived> queryable = ???
Expression<Func<Base, bool>> filter = ???
Run Code Online (Sandbox Code Playgroud)

我想用表达式过滤可查询,然后返回一个IQueryable<Derived>.

但是,Expression是不变的.这意味着queryable.Where(filter)被推断为Where(this IQueryable<Base>, Expression<Func<Base, bool>>),IQueryable<Base>而不是返回IQueryable<Derived>.

C#不允许filter被转换为Expression<Func<Derived, bool>>和的铸造IQueryable<Base>返回通过WhereIQueryable<Derived>在运行时出现故障.

围绕这个最好的方法是什么?

c# iqueryable variance linq-expressions

2
推荐指数
1
解决办法
172
查看次数