问题描述
HI全部,
我是Linq的新手,所以我在这个问题上请求你的帮助。
所以我有方法返回用户列表,如下所示
var usernames = getuser(userID.ToString() );
getuser方法如下所示
public static List< string> GetUser(string id)
{
List< string> user1 = new List< string>();
if(!string.IsNullOrWhiteSpace(id))
{
getUser repository = new getUser();
user1 = repository.GetUserbyid(id);
repository.Dispose();
}
返回user1;
}
所以我让所有用户使用字符串生成器
foreach(用户名中的var项)
{sb.AppendLine(p.username.Contains(+ item.ToString()。ToLower()+)+ ||); }
sb的输出如下所示
{p.CreatedBy.Contains(011)|| p.CreatedBy.Contains(009)|| p.CreatedBy.Contains(0000000010)}
所以我有一个谓词,如下所示
var predictate = PredicateBuilder.True< Getuserdeatils>();
所以我有查询用于不同的操作。所以我只需要更改查询的预测部分,如下所示。
var query =(来自sr in context.Getuser.AsExpandable()。其中(预测)
在上下文中加入wi。 sr.CreatedBy上的UserProfiles等于w1.UserName到list1
来自list1.DefaultIfEmpty()中的l1。
所以在上面的查询中我想预测如下
predictate = predictate.And(p => p.username。包含(010)|| p.username.Contai ns(011)|| p.username.Contains(009));
提前感谢。
我尝试过的事情:
我试过以下
foreach(用户名中的var项)
{
predictate = predictate.And(p => p.CreatedBy.Contains(item.ToString()));
}
和
predictate = predictate.And(p =>((bool.Parse(sb.ToString()))));
HI All,
I am new to Linq so I request for your help me in this issue.
so I have methods which return a list of the user as shown below
var usernames = getuser(userID.ToString());
getuser method as show below
public static List<string> GetUser(string id) { List<string> user1 = new List<string>(); if (!string.IsNullOrWhiteSpace(id)) { getUser repository = new getUser(); user1 = repository.GetUserbyid(id); repository.Dispose(); } return user1; }
so I am getting all the users using the string builder
foreach (var item in usernames) { sb.AppendLine("p.username.Contains("+ item.ToString().ToLower()+")" + "||"); }
the output of sb as shown below
{p.CreatedBy.Contains(011)||p.CreatedBy.Contains(009)||p.CreatedBy.Contains(0000000010)}
so I have a predicate as shown below
var predictate = PredicateBuilder.True<Getuserdeatils>();
so I have the query where it used for the different operation.so I have to changed only the predictate part of the query as shown below.
var query = (from sr in context.Getuser.AsExpandable().Where(predictate) join wi in context.UserProfiles on sr.CreatedBy equals wi.UserName into list1 from l1 in list1.DefaultIfEmpty()
so in the above query i want predictate as following
predictate = predictate.And( p => p.username.Contains("010") ||p.username.Contains("011") || p.username.Contains("009"));
thanks in advance.
What I have tried:
I have tried as follwoing
foreach (var item in usernames) { predictate = predictate.And(p =>p.CreatedBy.Contains(item.ToString())); }
and
predictate = predictate.And(p =>((bool.Parse(sb.ToString()))));
这篇关于如何使用谓词生成器将字符串生成器分配给linq查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!