我正在尝试使用LINQ中的Union合并列表,但我不想删除重复的值。
WordJEntities db = new WordJEntities();
string[] barrayk = new string[6] {"12","13","14","12","13","15"};
var sppk = from row in db.table1 where row.Id == 12 select new{row.name };
IEnumerable<object> data8k = null;
for (int i = 0; i < barrayk.Length; i++)
{
string ajk = barrayk[i];
int ajjk = Convert.ToInt32(ajk);
var data7k = from row in db.table1 where row.Id == ajjk select new { row.name };
if (i == 0)
{
data8k = sppk.ToList().Union(data7k).ToList();
}
else
{
data8k = data8k.Union(data7k).ToList();
}
int jrj = data8k.ToList().Count;
}
string s4 = js.Serialize(data8k);
输出必须有6条记录,但它有4条记录。
答案 0 :(得分:2)
使用.Concat
代替.Union
。
答案 1 :(得分:0)
如果它们属于同一类型,则AddRange
也应该起作用。
AddRange
保留了列表的顺序,但它不会删除Union所做的任何重复,但确实玷污了原始列表。
sppk.ToList().AddRange((data7k).ToList());
如果您不想修改原始列表,请按照建议使用Concat
Fiddle证明了这一点。