Как назначить string builder запросу linq с помощью predicatebuilder
Всем привет,
Я новичок в 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(); } return user1; }
таким образом, я получаю всех пользователей, использующих строковый конструктор
foreach (var item in usernames) { sb.AppendLine("p.username.Contains("+ item.ToString().ToLower()+")" + "||"); }
выходной СБ, как показано ниже
{p.CreatedBy.Contains(011)||p.CreatedBy.Contains(009)||p.CreatedBy.Contains(0000000010)}
Итак, у меня есть предикат, как показано ниже
var predictate = PredicateBuilder.True<Getuserdeatils>();
Итак, у меня есть запрос, где он используется для другой операции.поэтому я должен изменить только предикатную часть запроса, как показано ниже.
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()
поэтому в приведенном выше запросе я хочу предсказать следующее
predictate = predictate.And( p => p.username.Contains("010") ||p.username.Contains("011") || p.username.Contains("009"));
заранее спасибо.
Что я уже пробовал:
Я попробовал сделать следующее
foreach (var item in usernames) { predictate = predictate.And(p =>p.CreatedBy.Contains(item.ToString())); }
и
predictate = predictate.And(p =>((bool.Parse(sb.ToString()))));
F-ES Sitecore
Забудь пытаться сделать это таким образом. Стройте свой предикат по ходу дела, а не стройте строку в StringBuilder.
предикат = предикат.И(someCondition)