相关疑难解决方法(0)

System.LINQ.Dynamic:选择("new(...)")到List <T>(或任何其他可枚举的<T>集合)

假设我有一个包含四列的DataTable,Company(字符串),Fund(字符串),State(字符串),Value(double):

    table1.Rows.Add("Company 1","Fund 1","NY",100));
    table1.Rows.Add("Company 2","Fund 1","CA",200));
    table1.Rows.Add("Company 3","Fund 1","FL",300));
    table1.Rows.Add("Company 4","Fund 2","CA",400));
    table1.Rows.Add("Company 5","Fund 1","NY",500));
    table1.Rows.Add("Company 6","Fund 2","CA",600));
    table1.Rows.Add("Company 7","Fund 3","FL",700));
Run Code Online (Sandbox Code Playgroud)

我想使用System.LINQ.Dynamic构建一个动态查询,该查询在公司,基金或州上分组,然后按条件选择我的组作为第一列,并且sum(value):

string groupbyvalue="Fund";
var q1= table1.AsEnumerable().AsQueryable()
              .GroupBy(groupbyvalue,"it")
              .Select("new ("+groupbyvalue+" as Group, Sum(Value) as TotalValue)");
Run Code Online (Sandbox Code Playgroud)

在上面的查询中,所选的groupbyvalue(Group)将始终是一个字符串,并且总和将始终为double,因此我希望能够转换为类似List的内容,其中Result是具有属性Group的对象(字符串) )和TotalValue(双).

我遇到很多麻烦,有人可以解决这个问题吗?

linq dynamic-linq

20
推荐指数
1
解决办法
4万
查看次数

LINQ是否可以动态添加where子句

我想用不同的密钥搜索我的数据库.根据输入,10键可能有1个键.有没有办法动态地向我的Linq查询添加OR/AND子句?

 keys[k] // I have my keys in this array 
 var feedList = (from feed in ctx.Feed
                 where feed.content.contains(keys[0]) 
                       && feed.content.contains(keys[1])
                       && ... // continues with the keys.length
                 select new {
                    FeedId = feed.DuyuruId,
                    FeedTitle = feed.FeedTitle,
                    FeedContent = feed.FeedContents,
                    FeedAuthor = user.UserName + " " +User.UserSurname
 }
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework where-clause

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

使用DateDiff与Linq.Dynamic库获取今天的记录

我试图通过MVC 5/Entity Framework 6应用程序中的Linq表达式使用DateDiff SQL语法获取今天添加的所有记录.DateDiff函数抛出运行时错误

实际上我想用以下linq WHERE子句来解析linq动态

.Where(p => DbFunctions.DiffDays(p.added_date, DateTime.Now) == 0)
Run Code Online (Sandbox Code Playgroud)

为了获取今天添加的记录.我正在使用的示例代码如下所示

var _list = new vsk_error_log();
using (var entities = new vskdbEntities())
{
   _list = entities.vsk_error_log
  //.Where("DateDiff(DAY,added_date,getdate())=0")
  .Where(p => DbFunctions.DiffDays(p.added_date, DateTime.Now) == 0)
  .ToList();
}
return _list;
Run Code Online (Sandbox Code Playgroud)

关于Linq.Dynamic表达式 - 如何编写where子句

LINQ中的动态WHERE子句

c# linq entity-framework entity-framework-6

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

linq 的用户定义过滤器

我有带有用户定义过滤器的表单(带有列名的组合框、带有过滤器类型的组合框和带有值的文本框)。

如何将用户定义的过滤器动态添加到 LINQ 查询中?

典型的查询如下所示:

var qProducts = from p in db.Products
    where p.IsArchived == false
    order by p.ProductName select p;
Run Code Online (Sandbox Code Playgroud)

我正在使用 LINQ(IQuerable Toolkit)来访问 SQL CE 数据库中的数据。

.net linq filter

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

LinQ查询 - 动态添加位置

我很难解决这个问题,需要在C#,asp.net中创建动态linq查询的代码.我有5个下拉列表,它搜索同一数据库表中的不同列,并将项目筛选值返回到单个列表框.问题是没有序列在DDL中选择了哪个或全部或任何一个,但组合的过滤结果应显示在列表框中.我有一个工作查询,分别在每个DDL选择中一次搜索并返回结果.必须在AND中添加where子句以动态地向此查询添加其他DDL选择.谢谢


public ListItemCollection searchProject(ListItemCollection projList, String searchstr, String columnName)
{
    DataSet DSToReturn = new DataSet();

    ListItemCollection returnItems = new ListItemCollection();
    DataTable results = (from d in ((DataSet)_MyDataset).Tables["Records"].AsEnumerable()
                         orderby d.Field<string>("Name") ascending
                         where (d.Field<string>(columnName) != null)
                         where d[columnName].ToString().ToLower().Contains(searchstr.ToLower())
                         select d).CopyToDataTable();

    foreach (ListItem li in projList)
    {
        if ((from System.Data.DataRow row in results.Rows
             where li.Value.Equals(row["value"].ToString(), StringComparison.InvariantCultureIgnoreCase)
             select row["value"]).Count() > 0)
        returnItems.Add(li);
    }

    return returnItems;
}
Run Code Online (Sandbox Code Playgroud)

linq

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

linq中的动态字符串c#

我已经安装了System.Linq.Dynamicdll然后尝试在Linq中添加字符串作为WHERE子句的参数.但我仍然得到WHERE子句支持字符串参数的错误.

码:

_dbContext.TmRecords.Where("city=london");
Run Code Online (Sandbox Code Playgroud)

错误:

严重级代码描述项目文件行错误CS1503参数2:无法从'string'转换为'System.Linq.Expressions.Expression>'Extranet.Domain

这里city参数动态地改变为其他参数.所以,我需要在linq中使用动态查询.

.net c# dynamic-linq

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

多种组合的设计模式

如果我必须根据是否存在不同的参数进行不同的数据库查询,那将是避免使用不同组合使用过多if-else的正确设计模式?假设我有参数a,b,c(将来数量可能会增加),我使用的是存储库,因此我必须像这样进行调用

public Foo getFoo(String a, String b, String c){
   Foo foo;
   if(a!=null && !a.isEmpty() && b!=null && !b.isEmpty() && c!=null && !c.isEmpty())
      foo = repository.findByAAndBAndC(a,b,c);
   if((a==null || a.isEmpty()) && b!=null && !b.isEmpty() && c!=null && !c.isEmpty())
      foo = repository.findByBAndC(b,c);
   if((a!=null && !a.isEmpty()) && (b==null || b.isEmpty()) && c!=null && !c.isEmpty())
      foo = repository.findByAAndC(a,c);
   if((a==null || a.isEmpty()) && (b==null || b.isEmpty()) && !b.isEmpty() && c!=null && !c.isEmpty())
      foo = repository.findByC(c);
   if((a==null || a.isEmpty()) && (b==null || b.isEmpty()) && !b.isEmpty() && (b==null …
Run Code Online (Sandbox Code Playgroud)

java design-patterns repository

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