2016-01-19 3 views
-1

Это то, что я пытаюсь достичь:как вернуть через запятую значение внутри цикла Еогеаспа

переменной
var result = (string)null; 
foreach (var tagId in MultipleTags) 
      { 
       result = string.Join(",", db.Tags.Where(t => t.TagId == tid).Select(e => e.TagName)); 
      } 

Этого результата должен содержать все значения в запятых формы, а MultipleTags содержат наборы идентификаторов, так что будет повторять более одного раза.

Как мне его написать. пожалуйста, предложите мне. Я сомневаюсь, что эта строка правильно написана.

db.Tags.Where(t => t.TagId == tid).Select(e => e.TagName) 

, пожалуйста, предложите мне что-нибудь.

+1

Предполагая, что 'где (т => t.TagId == TID)' возвращает только одно значение (т. е. 'TagId' является ключом unoque), тогда ваш код будет возвращать только одно значение (поэтому нет ничего «join») –

+0

Я знаю, почему у меня есть как ked, как вернуть обратно значения, разделенные запятыми, этой переменной результата, потому что я должен выбирать тэги на основе tagId @StephenMuecke – neo

+0

Вам нужно '.Contains()', чтобы получить все соответствия меток 'MultipleTags' - ответ Фабио Луз должен так что. –

ответ

2

Это трюк:

//assuming that MultipleTags is an array of "ids" 
var result = db.Tags.Where(t => MultipleTags.Contains(t.TagId)).Select(e => e.TagName).ToList().Aggregate((a, b) => a + "," + b); 
+0

LINQ to Entities не распознает метод «System.String Aggregate [String] (System.Linq.IQueryable'1 [System.String], System.Linq.Expressions.Expression'1 [System.Func'3 [System.String] , System.String, System.String]]) ', и этот метод не может быть переведен в выражение хранилища. это то, что я возвращаюсь, и еще одна вещь, которую я перехожу к контроллеру IEnumerable MultipleTags как параметр @Fabio Luz – neo

+0

извините! проверить обновленный ответ –

0

Попробуйте это слишком

var result = db.Tags.Where(t => MultipleTags.Contains(t.TagId)).ToList().ForEach((item) => 
      { 
       item.TagName = item.id + "," + item.TagName; 
      }); 
0

попробуйте использовать этот

var result = (string)null; 
    result=string.Join(",", (from a in db.Tags join m in MultipleTags on a.TagId equals m select a.TagName)); 
Смежные вопросы